许多辅助方法(如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 hash作为参数的情况下,form_for似乎能够接受局部变量。键是可以在partial中使用的locals,值是模板中的实例变量。这是正确的理解吗?
答案 0 :(得分:0)
@post
和post
都是对象。 @post是一个实例变量,post是局部变量或将返回帖子的方法唯一“怪异”的是form_for :post
种。这是旧式的Rails语法,并将其更改为引擎盖下的form_for @post
语法。