Ruby on Rails의 숨겨진 기능
Ruby의 숨겨진 기능과 함께 제공됩니다 .
다른 하나는 Ruby 관련 예제를위한 더 나은 장소이므로 Rails에 보관하십시오. 게시물 당 하나씩 부탁드립니다.
중복 양식 제출을 방지하기 위해 Rails에는 제출 태그에 대한 좋은 옵션이 있습니다.
submit_tag "Submit", :disable_with => "Saving..."
그러면 제출 버튼에 동작이 추가되어 클릭하면 비활성화되고 "제출"대신 "저장 중 ..."이 표시됩니다.
Rails 4+
DEPRECATION WARNING: :disable_with option is deprecated and
will be removed from Rails 4.1. Use 'data: { disable_with: 'Text' }' instead.
따라서 위는 다음과 같습니다.
submit_tag 'Submit', data: { disable_with: 'Text' }
integer.ordinalize는 얼마 전에 우연히 만난 작은 방법 중 하나입니다.
1.ordinalize = "1st"
3.ordinalize = "3rd"
내가 사랑에 현재 해요 div_for
및content_tag_for
<% div_for(@comment) do %>
<!-- code to display your comment -->
<% end %>
위의 코드는 이것을 렌더링합니다.
<div id="comment_123" class="comment">
<!-- code to display your comment -->
</div>
CSS 클래스를 원하십니까 comment other_class
? 문제 없어요:
<% div_for(@comment, :class => 'other_class') do %>
<!-- code to display your comment -->
<% end %>
div가 아닌 스팬을 원하십니까? 문제 없습니다, content_tag_for
구조에!
<% content_tag_for(:span, @comment) do %>
<% end %>
# Becomes...
<span id="comment_123" class="comment">
<!-- code to display your comment -->
</span>
content_tag_for
접두사를 사용하려는 경우에도 좋습니다 id
. gif를로드하는 데 사용합니다.
<% content_tag_for(:span, @comment, 'loading') do %>
<%= image_tag 'loading.gif' -%>
<% end %>
# Becomes...
<span id="loading_comment_123" class="comment">
<img src="loading.gif" />
</span>
설치된 gem 목록을 보려면 다음을 실행할 수 있습니다.
gem server
그런 다음 브라우저를 다음으로 지정하십시오.
http://localhost:8808
rdoc, 웹 및 모든 종속성에 대한 링크가 포함 된 멋진 형식의 gem 목록을 얻을 수 있습니다. 다음보다 훨씬 좋습니다.
gem list
Ruby 클래스 정의가 활성화되어 있고 Rails가 프로덕션 환경에서 클래스를 캐시한다는 사실을 활용하여 애플리케이션이 시작될 때 데이터베이스에서만 상수 데이터를 가져 오도록 할 수 있습니다.
예를 들어 국가를 나타내는 모델의 Country.all
경우 클래스가로드 될 때 쿼리 를 수행하는 상수를 정의합니다 .
class Country < ActiveRecord::Base
COUNTRIES = self.all
.
.
.
end
를 참조하여보기 템플릿 (선택 도우미 내에서) 내에서이 상수를 사용할 수 있습니다 Country::COUNTRIES
. 예를 들면 :
<%= select_tag(:country, options_for_select(Country::COUNTRIES)) %>
environment.rb에서 새로운 날짜 / 시간 형식을 정의 할 수 있습니다.
[Time::DATE_FORMATS, Date::DATE_FORMATS].each do |obj|
obj[:dots] = "%m.%d.%y"
end
따라서 뷰에서 다음을 사용할 수 있습니다.
Created: <%= @my_object.created_at.to_s(:dots) %>
다음과 같이 인쇄됩니다.
Created: 06.21.09
일부 클래스 메서드와 일부 명명 된 범위가있는 모델이있는 경우 :
class Animal < ActiveRecord::Base
named_scope 'nocturnal', :conditions => {'nocturnal' => true}
named_scope 'carnivorous', :conditions => {'vegetarian' => true}
def self.feed_all_with(food)
self.all.each do |animal|
animal.feed_with(food)
end
end
end
그런 다음 명명 된 범위를 통해 클래스 메서드를 호출 할 수 있습니다.
if night_time?
Animal.nocturnal.carnivorous.feed_all_with(bacon)
end
이제 Rails 2.3.x에서 다음을 수행 할 수 있습니다.
render @items
훨씬 간단합니다 ..
제가 좋아하는 것 중 하나부터 시작하겠습니다. 컬렉션으로 부분을 호출 할 때 컬렉션을 반복하고 각 항목에 대해 호출하는 대신 다음을 사용할 수 있습니다.
render :partial => 'items', :collection => @items
항목 당 한 번씩 부분을 호출하고 매번 지역 변수 항목을 전달합니다. @item을 검사하지 않아도됩니다.
테스트 스위트에 대한 모델의 동작을 변경할 수 있습니다. 몇 가지 after_save 메소드가 정의되어 있고 단위 테스트에서 발생하지 않기를 원한다고 가정하십시오. 작동 방식 :
# models/person.rb
class Person < ActiveRecord::Base
def after_save
# do something useful
end
end
# test/unit/person_test.rb
require 'test_helper'
class PersonTest < ActiveSupport::TestCase
class ::Person
def after_save
# do nothing
end
end
test "something interesting" do
# ...
end
end
재미있는 기능은 배열이 42 요소에 액세스하는 특별한 방법이 있다는 것입니다.
a = []
a.forty_two
http://railsapi.com/doc/rails-v2.3.8/classes/ActiveSupport/CoreExtensions/Array/Access.html#M003045
If you add routing for a resource:
ActionController::Routing::Routes.draw do |map|
map.resources :maps
end
And register additional mime-types:
Mime::Type.register 'application/vnd.google-earth.kml+xml', :kml
You don't need a respond_to
block in your controller to serve these additional types. Instead, just create views for the specific types, for example 'show.kml.builder'
or 'index.kml.erb'
. Rails will render these type-specific templates when requests for '/maps.kml'
or '/maps/1.kml'
are received, setting the response type appropriately.
ActionView::Base.default_form_builder = MyFormBuilderClass
Very useful when you're creating your own form builders. A much better alternative to manually passing :builder, either in your views or in your own custom_form_for
helper.
The returning block is a great way to return values:
def returns_a_hash(id)
returning Hash.new do |result|
result["id"] = id
end
end
Will return a hash. You can substitute any other types as well.
Get everything printed with rake routes programmatically:
Rails.application.routes
참고URL : https://stackoverflow.com/questions/709679/hidden-features-of-ruby-on-rails
'Program Tip' 카테고리의 다른 글
Django manage.py 알 수없는 명령 : 'syncdb' (0) | 2020.12.13 |
---|---|
macOS Mojave에서 Xcode 10 네트워크 링크 조절기를 설치할 수 없음 (0) | 2020.12.13 |
iPhone에서 Core Data 프로그램에 대한 고유 ID 생성 (0) | 2020.12.13 |
자바 스크립트 : 하나의 값을 여러 값과 비교하는 가장 예쁜 방법 (0) | 2020.12.13 |
XAML에서 Canvas의 Children 속성을 바인딩 할 수 있습니까? (0) | 2020.12.13 |