许多辅助方法,例如 redirect_to、link_to 和 url_for,可以将 ActiveRecord 对象作为参数,而不是指定控制器和操作的散列。我在不同的文档中看到参数以不同的方式传递。它有时作为符号传递,有时作为实例变量传递,有时作为局部变量传递。
我对如何扩展不同的参数样式以返回 url 感到困惑。我知道遵循 REST 约定应该创建一个由控制器和操作构造的 url,但不确定 Rails 何时需要特定的参数样式来构造该 url。请帮助我了解将 ActiveRecord 对象作为符号、实例变量或局部变量传递的用例。根据方法调用是否有不同的要求?还是在 url 构造上存在潜在差异?
这里有些例子:
从 API 文档:
link_to "Profile", @profile
redirect_to post
<%= url_for(@workshop) %>
<%= form_for :person do |f| %> (this is described as the “generic #form_for”)
来自 Ruby on Rails 指南:
<%= link_to 'New book', new_book_path %>
redirect_to(@book)
form_for(@article)
从 Rails 3 方式:
'link_to' "Help", help_widgets_path, :popup => 1
redirect_to post
url_for(timesheets_path)
form_for offer do |f|
注意:经过进一步研究,在调用视图模板传递 :locals 哈希作为参数的情况下,form_for 似乎能够接受局部变量。键是可以在局部中使用的局部变量,值是模板中的实例变量。这是正确的理解吗?