release notes for Rails 3.0包含此更改:
7.4.2有块的助手
form_for
或div_for
的帮助者现在使用<%=
插入块中的内容:<%= form_for @post do |f| %> ... <% end %>
这种类型的助手应该返回一个字符串,而不是手工附加到输出缓冲区。
执行其他操作的助手(例如
cache
或content_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中删除。
但是,我确信这还不完整 - 有人能提供完整的清单吗?
答案 0 :(得分:1)
我没有完整的列表,但我认为您可以从查看UrlHelper
和FormHelper
文档中的差异中获得大部分变化。这些助手中的大多数方法都改为新语法。
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;%。目前的表单现在将继续有效,但您将收到弃用警告 这种形式将来会消失。