0

私はRuby-on-Railsの初心者で、始めたばかりです。

私は「account_types」と呼ばれるMVCを持っており、これはスキャフォールドを介して生成され、以下を生成します。

  • controllers / account_types_controller.rb
  • helpers / account_types_helper.rb
  • models / account_type.rb
  • views / account_types / _form、edit、indexなど...

localhost:3000 / account_typesに移動すると、インデックスビューが表示されます。

私がやりたいのは、アプリケーションインデックスページのaccount_typesインデックスメソッドから選択したものと同じデータをリストとして表示することです。

account_types/_list.html_erbという新しいビューを次のように作成しました。

<ul>
<% @account_types.each do |account| %>
    <li><% account.label %></li>
<% end %>
</ul>

次に、home / index.html.erbを編集しました(これは、SOに関する他の質問で与えられた例に基づいています)。

<%= render :partial => 'account_types/list', :module_types => @module_types %>

しかし、私は得る

nil:NilClassの未定義のメソッド `each'

エラーは、私が書いたaccount_types/_list.html.erbからのコードを表示します

<% @account_types.each do |account| %>

足場のビューはうまく機能します、なぜ私のものではないのですか?

パーシャルはここで使用するのが正しいですか?

前もって感謝します。

4

3 に答える 3

1

アプリケーション全体のパーシャルとその変数をrailsで定義する正しい方法はbefore_filter、 onを使用することApplicationControllerです。

于 2012-05-03T21:57:11.810 に答える
0

:module_typesパーシャルに渡しますが、を使用しますaccount_types。ご覧のとおり、index.html.erbを次のように変更する必要があります。

<%= render :partial => 'account_types/list', :account_types => @module_types %>
于 2012-04-30T12:19:41.610 に答える
0

必要に応じてパーシャルを使用できますが、私が知る限り、この場合は不要です(複数のビュー間でコードのチャンクを共有するためのものです)。このコードを機能させるに@account_typesは、コントローラーで次のようなものを定義する必要があります。

@account_types = AccountType.all

account_types_controller.rbあなたはあなたのindex行動中の正確な線を見ることができます。ここでは必要ありません。あなたがどちらか:module_types => @module_typesを定義したは思えず、パーシャルではまったく使用しないからです。@module_typesmodule_types

Railsがどのように機能するかを理解していないことは明らかです。そのため、考えていることを進める前に、優れたチュートリアル(このチュートリアルなど)を読むことをお勧めします。

于 2012-04-30T12:35:14.147 に答える