2017-04-26 1 views
0

上記のように、インデックスアクションでは@moviesが使用されますが、showアクションでは@movieが使用されます。それが複数であるか単数であるかはどのようにして決定されますか?Ruby on Railsでは、なぜコントローラの中にはいつも、複数であり、時にはそれが単数形ですか?

+2

マップされているRailsとhttp動詞のアクションについて読む必要があります。 [はじめに](http://guides.rubyonrails.org/routing.html) –

答えて

3

@moviesおよび@movieは、定義方法を選択するインスタンス変数です。あなたの例では、@moviesがモデルからの映画のコレクション全体に割り当てられているため、通常は複数の変数が割り当てられています。 @movieは1つのレコードに割り当てられているため、従来は単一変数が割り当てられていました。

インスタンス変数には任意の名前を付けることができますが、Railsは設定よりも規約を優先します。

+0

確かに。しかし、それだけでなく、Railsのconventioです。私は 'movies'がどの言語のスクリプトでも' movie'オブジェクトのコレクション(set、array、list、...)を保持すると期待しています。 –

0

通常、配列の場合は複数を使用し、1つのオブジェクトの場合は特異なものを使用します。

1

@ Dithanialの回答に追加すると、表示操作をクリックしたときによく分かるように、特定のレコードだけが表示されます。そこで、以下のコードで:

def show 
    @movie = Movie.find(params[:id]) 
    @actors = @movie.actors 
end 

インスタンス変数それのIDをベースとしたコンテンツを表示するには、特定のアイテムを見つける@movie。

0

インデックスでは、すべてのムービーを取得するので、すべてのムービーをリストすることができます。

他のコントローラの方法では、通常の1つのムービーを編集しています。

@movies@moviesは実際には関係ありません。あなたはそれを@bananaと名付けることができます。しかし、ファイル名(モデル=単数形、コントローラー=複数形)、複数形が関係するアクティブレコード関係(参考資料)など多くのケースがあります。

関連する問題