コマンドを実行するとしましょう
rails g scaffold Movie title:string desc:text
生成されたインデックスファイルで/app/views/movies/index.html.erb
は、Movieオブジェクトは次のようにループされます。
<% @movies.each do |movie| %>
<tr>
<td><%= movie.title %></td>
<td><%= link_to 'Show', movie %></td>
# and some other columns
</tr>
<% end %>
そのlink_to 'Show', movie
部分がわかりません。ルーティングファイルでは、Movieオブジェクトがリソースフルルーティング(resources :movies
)を使用しているため、それがどのように機能するかを知ることができませんでした。
TL; DR:リンクを作成した場合link_to "Some place", theObject
、それはどこにつながり、ルーティングでどのように(再)定義できますか?
説明すると、のようなものを使用する場合link_to "...", object
、Ruby
オブジェクト指向でRails
あるobject
ため、関連するすべてのデータが内部に含まれていることを期待していることを覚えておく必要があります(正しく設定されている場合)。
オブジェクト
したがって、を定義@movies = Movie.all
している場合は、内部ActiveRecord
のmovie
オブジェクトのコレクションを含むオブジェクトが返されます。素人には、これはデータオブジェクトの配列として表示さ.each
れ、例のループを使用して循環できます。
<%= @movies.each do |movie| %>
...
<% end %>
したがって、このコードはコレクションobject
からそれぞれを出力します@movies
-link_to
パスを構築するために必要なすべての詳細をRailsに提供します
-
ルーティング
resources :model
ヘルパーを使用してルーティングしている場合、Railsは基本的に一連のRESTful
ルートを作成します。
GET /photos photos#index display a list of all photos
GET /photos/new photos#new return an HTML form for creating a new photo
POST /photos photos#create create a new photo
GET /photos/:id photos#show display a specific photo
GET /photos/:id/edit photos#edit return an HTML form for editing a photo
PATCH/PUT /photos/:id photos#update update a specific photo
DELETE /photos/:id photos#destroy delete a specific photo
これはlink_to
、オブジェクトをメソッドに渡すことで、ヘルパーが使用するルートを知る方法です。
お役に立てれば
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加