当前位置:  开发笔记 > 后端 > 正文

Ruby on Rails的隐藏功能

如何解决《RubyonRails的隐藏功能》经验,为你挑选了11个好方法。

作为Ruby的隐藏功能的伴侣.

尝试将其保留到Rails,因为另一个是特定于Ruby的示例的更好地方.每个帖子请一个.



1> Jo Hund..:

为了避免重复的表单提交,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' }



2> Dan Frade..:

integer.ordinalize是我不久前偶然发现的一个小方法.

1.ordinalize = "1st"
3.ordinalize = "3rd"



3> Matt Grande..:

我目前在爱div_forcontent_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...


  



4> Brian..:

要查看已安装的gem列表,您可以运行:

gem server

然后将浏览器指向:

http://localhost:8808

您可以获得格式良好的宝石列表,其中包含指向rdoc,Web和任何依赖项的链接.比以下更好:

gem list


这个不是Rails特有的,是吗?只是指出,因为你在你的问题中提到了另一个与Ruby相关的线程.

5> John Topley..:

您可以利用Ruby类定义处于活动状态并且Rails在生产环境中缓存类的事实,以确保在应用程序启动时仅从数据库中获取常量数据.

例如,对于表示国家/地区的模型,您可以定义在Country.all加载类时执行查询的常量:

class Country < ActiveRecord::Base
  COUNTRIES = self.all
  .
  .
  .
end

您可以通过引用在视图模板(可能在select帮助器中)中使用此常量Country::COUNTRIES.例如:

<%= select_tag(:country, options_for_select(Country::COUNTRIES)) %>



6> jemminger..:

在您的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


这个很棒!

7> tomafro..:

如果您的模型包含一些类方法和一些命名范围:

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


显然你的食肉动物是素食主义者?

8> 小智..:

Rails 2.3.x现在允许您:

render @items

更简单..



9> Brian..:

我将从我最喜欢的一个开始.使用集合调用partial时,可以使用以下代码来循环访问集合并为每个项目调用它:

render :partial => 'items', :collection => @items

这将为每个项目调用一次部分,并且每次都传递一个局部变量项.您也不必担心nil检查@items.



10> ericteubert..:

您可以更改测试套件的模型行为.假设您定义了一些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



11> Fivell..:

有趣的是,该数组具有访问其42元素的特殊方法

a = []
a.forty_two

http://railsapi.com/doc/rails-v2.3.8/classes/ActiveSupport/CoreExtensions/Array/Access.html#M003045

推荐阅读
kikokikolove
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有