作为Ruby的隐藏功能的伴侣.
尝试将其保留到Rails,因为另一个是特定于Ruby的示例的更好地方.每个帖子请一个.
为了避免重复的表单提交,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 %> <% end %>
上面的代码呈现:
想要CSS课程comment other_class
吗?没问题:
<% div_for(@comment, :class => 'other_class') do %> <% end %>
想要跨度而不是div?没问题,content_tag_for
救援!
<% content_tag_for(:span, @comment) do %>
<% end %>
# Becomes...
content_tag_for
如果你想给你添加前缀,那也很棒id
.我用它来加载GIF.
<% content_tag_for(:span, @comment, 'loading') do %>
<%= image_tag 'loading.gif' -%>
<% end %>
# Becomes...
要查看已安装的gem列表,您可以运行:
gem server
然后将浏览器指向:
http://localhost:8808
您可以获得格式良好的宝石列表,其中包含指向rdoc,Web和任何依赖项的链接.比以下更好:
gem list
您可以利用Ruby类定义处于活动状态并且Rails在生产环境中缓存类的事实,以确保在应用程序启动时仅从数据库中获取常量数据.
例如,对于表示国家/地区的模型,您可以定义在Country.all
加载类时执行查询的常量:
class Country < ActiveRecord::Base COUNTRIES = self.all . . . end
您可以通过引用在视图模板(可能在select帮助器中)中使用此常量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
更简单..
我将从我最喜欢的一个开始.使用集合调用partial时,可以使用以下代码来循环访问集合并为每个项目调用它:
render :partial => 'items', :collection => @items
这将为每个项目调用一次部分,并且每次都传递一个局部变量项.您也不必担心nil检查@items.
您可以更改测试套件的模型行为.假设您定义了一些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