0

Rubyを学び始めたばかりなので、この質問は簡単です。

コントローラーで @subject を作成しました。
:subject が form_for で (@subject の代わりに) 使用されるのはなぜですか?

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

2 に答える 2

1

これは、rspec rails テストの assigns に似ています (調べることができます。assigns(:subject) は、コントローラーで @subject を探します)。間違っている場合は訂正してください。ただし、シンボル :subject が @subject に対応するコントローラー内のインスタンス変数を探し出そうとするためだと思います。それを証明するために、コントローラーの @subject の名前を @subjectz のような別の名前に変更してください。

于 2012-06-14T16:41:37.960 に答える
1

According to the documentation, you could use either (http://api.rubyonrails.org/classes/ActionView/Helpers/FormHelper.html#method-i-form_for).

Passing in the symbol :subject will create a generic form for a resource named 'subject'. Passing in the instance variable @subject will create a form for the specific instance of the Subject class and figure out the correct url for you (assuming you're following the standard rails conventions). The documentation mentions that using the latter method with the instance variable is the preferred method.

于 2012-06-14T03:48:23.763 に答える