form_for:subject

时间:2012-06-13 23:42:17

标签: ruby-on-rails ruby

我刚开始学习红宝石,所以这个问题很简单。

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

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

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

它类似于rspec rails测试中的分配(您可以查找它,分配(:subject)将在您的控制器中寻找@subject)。如果我错了,请纠正我,但我认为这是因为符号:subject将尝试寻找控制器中与@subject对应的实例变量。所以为了证明这一点,将你控制器中的@subject重命名为其他内容,比如@subjectz,我认为它不会工作任何事情