0

我刚开始学习 ruby​​,所以这个问题很简单。

我在控制器中创建了@subject。
为什么在 form_for 中使用 :subject(而不是 @subject)?

<%= form_for(:subject, :url => {:action => 'create'}) do |f| %>
4

2 回答 2

1

根据文档,您可以使用任一(http://api.rubyonrails.org/classes/ActionView/Helpers/FormHelper.html#method-i-form_for)。

传入符号:subject将为名为“主题”的资源创建通用表单。传入实例变量@subject将为 Subject 类的特定实例创建一个表单,并为您找出正确的 url(假设您遵循标准的 rails 约定)。文档提到,使用带有实例变量的后一种方法是首选方法。

于 2012-06-14T03:48:23.763 回答
1

它类似于 rspec rails testing 中的 assignments(您可以查找它,assigns(:subject) 将在您的控制器中寻找 @subject)。如果我错了,请纠正我,但我认为这是因为符号 :subject 将尝试在控制器中寻找与 @subject 对应的实例变量。因此,为了证明这一点,请将控制器中的 @subject 重命名为其他名称,例如 @subjectz ,我认为它不会正常工作

于 2012-06-14T16:41:37.960 回答