Jo *_*und 70
为了避免重复的表单提交,Rails有一个很好的提交标签选项:
submit_tag "Submit", :disable_with => "Saving..."
Run Code Online (Sandbox Code Playgroud)
这会向提交按钮添加行为,以便在单击后禁用它,并显示"正在保存..."而不是"提交".
Rails 4+
DEPRECATION WARNING: :disable_with option is deprecated and
will be removed from Rails 4.1. Use 'data: { disable_with: 'Text' }' instead.
Run Code Online (Sandbox Code Playgroud)
因此,上述变为:
submit_tag 'Submit', data: { disable_with: 'Text' }
Run Code Online (Sandbox Code Playgroud)
Dan*_*ade 22
integer.ordinalize是我不久前偶然发现的一个小方法.
1.ordinalize = "1st"
3.ordinalize = "3rd"
Run Code Online (Sandbox Code Playgroud)
Mat*_*nde 21
我目前在爱div_for
和content_tag_for
<% div_for(@comment) do %>
<!-- code to display your comment -->
<% end %>
Run Code Online (Sandbox Code Playgroud)
上面的代码呈现:
<div id="comment_123" class="comment">
<!-- code to display your comment -->
</div>
Run Code Online (Sandbox Code Playgroud)
想要CSS课程comment other_class
吗?没问题:
<% div_for(@comment, :class => 'other_class') do %>
<!-- code to display your comment -->
<% end %>
Run Code Online (Sandbox Code Playgroud)
想要跨度而不是div?没问题,content_tag_for
救援!
<% content_tag_for(:span, @comment) do %>
<% end %>
# Becomes...
<span id="comment_123" class="comment">
<!-- code to display your comment -->
</span>
Run Code Online (Sandbox Code Playgroud)
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>
Run Code Online (Sandbox Code Playgroud)
Bri*_*ian 18
要查看已安装的gem列表,您可以运行:
gem server
Run Code Online (Sandbox Code Playgroud)
然后将浏览器指向:
http://localhost:8808
Run Code Online (Sandbox Code Playgroud)
您可以获得格式良好的宝石列表,其中包含指向rdoc,Web和任何依赖项的链接.比以下更好:
gem list
Run Code Online (Sandbox Code Playgroud)
Joh*_*ley 16
您可以利用Ruby类定义处于活动状态并且Rails在生产环境中缓存类的事实,以确保在应用程序启动时仅从数据库中获取常量数据.
例如,对于表示国家/地区的模型,您可以定义在Country.all
加载类时执行查询的常量:
class Country < ActiveRecord::Base
COUNTRIES = self.all
.
.
.
end
Run Code Online (Sandbox Code Playgroud)
您可以通过引用在视图模板(可能在select帮助器中)中使用此常量Country::COUNTRIES
.例如:
<%= select_tag(:country, options_for_select(Country::COUNTRIES)) %>
Run Code Online (Sandbox Code Playgroud)
jem*_*ger 13
在您的environment.rb中,您可以定义新的日期/时间格式,例如
[Time::DATE_FORMATS, Date::DATE_FORMATS].each do |obj|
obj[:dots] = "%m.%d.%y"
end
Run Code Online (Sandbox Code Playgroud)
那么在你的视图中你可以使用:
Created: <%= @my_object.created_at.to_s(:dots) %>
Run Code Online (Sandbox Code Playgroud)
这将打印如下:
Created: 06.21.09
Run Code Online (Sandbox Code Playgroud)
tom*_*fro 12
如果您的模型包含一些类方法和一些命名范围:
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
Run Code Online (Sandbox Code Playgroud)
然后,您可以通过命名范围调用类方法:
if night_time?
Animal.nocturnal.carnivorous.feed_all_with(bacon)
end
Run Code Online (Sandbox Code Playgroud)
我将从我最喜欢的一个开始.使用集合调用partial时,可以使用以下代码来循环访问集合并为每个项目调用它:
render :partial => 'items', :collection => @items
Run Code Online (Sandbox Code Playgroud)
这将为每个项目调用一次部分,并且每次都传递一个局部变量项.您也不必担心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
Run Code Online (Sandbox Code Playgroud)
有趣的是,该数组具有访问其42元素的特殊方法
a = []
a.forty_two
Run Code Online (Sandbox Code Playgroud)
http://railsapi.com/doc/rails-v2.3.8/classes/ActiveSupport/CoreExtensions/Array/Access.html#M003045
归档时间: |
|
查看次数: |
10949 次 |
最近记录: |