究竟哪些内容插入块助手在Rails 3中改变了行为?

时间:2013-05-02 14:58:51

标签: ruby-on-rails ruby-on-rails-3 erb rails-3-upgrade

release notes for Rails 3.0包含此更改:

  

7.4.2有块的助手

     

form_fordiv_for的帮助者现在使用<%=插入块中的内容:

<%= form_for @post do |f| %>
   ...
<% end %>
     

这种类型的助手应该返回一个字符串,而不是手工附加到输出缓冲区。

     

执行其他操作的助手(例如cachecontent_for)不受此更改的影响,他们需要像以前一样<%

我们正在将Web应用程序从Rails 2.3.18迁移到Rails 3.1.12,并且拥有已更改的此类帮助程序的完整列表非常有用,以便我们可以检查所有它们出现在我们的源代码中,但我很难找到这种权威列表。

我已经尝试查看rails project的git历史记录,但似乎有许多提交相关更改,并且它们显然没有分组在特定分支上。例如,似乎很清楚该列表包括:

  • form_for
  • form_tag
  • fields_for
  • field_set_tag

...来自7b622786f

  • link_to

......在e98474096

中提到
  • div_for
  • content_tag_for

......在e8d2f48cff

中提到
  • remote_form_for

....在0982db91f中提到,虽然它已在Rails 3中删除。

但是,我确信这还不完整 - 有人能提供完整的清单吗?

2 个答案:

答案 0 :(得分:1)

我没有完整的列表,但我认为您可以从查看UrlHelperFormHelper文档中的差异中获得大部分变化。这些助手中的大多数方法都改为新语法。

http://apidock.com/rails/v2.3.8/ActionView/Helpers/UrlHelper/link_to http://apidock.com/rails/v2.3.8/ActionView/Helpers/FormHelper/form_for

答案 1 :(得分:0)

rails_upgrade plugin中有这些方法的列表,其目的是检查应用程序是否存在从Rails 2升级到Rails 3的问题。relevant method is check_old_helpers,用于检查块帮助程序包含任何一个:

  • content_tag
  • javascript_tag
  • form_for
  • form_tag
  • fields_for
  • field_set_tag

至于权威性如何,这个插件是一个官方的Rails项目插件,虽然它确实错过了我通过搜索git历史找到的一对:

  • div_for
  • remote_form_for
  • link_to

但是,如果检查这些助手的官方工具缺少一些,那么这可能就像我可能找到的一样好。另一点是升级检查工具提到如果你错过了一些应该有弃用警告,这提供了额外的检查:

  

使用concat(例如,form_for)的块助手应该使用&lt;%=而不是&lt;%。目前的表单现在将继续有效,但您将收到弃用警告   这种形式将来会消失。