ruby on railsを学び、ルートやパスメソッドをいじる。モデル「Book」と「Author」を使用して、かなり単純なアプリケーションを作成しました。各著者は多くの本を持つことができ、すべての本は著者に属します。
すべての著者をリストするメソッド #list を持つ著者コントローラがあります。それを行うと、すべての本もエコーアウトします。ここで、私が見つけたこの気の利いたパス メソッドを使用して、各本が books#show を指すようにします。
これが私のスニペットです:
<% @authors.each do |author| %>
<li><%= author.name %></li>
<ul>
<% author.books.all.each do |book| %>
<li><%= link_to book.name, controller: :books, action: :show, id: book.id %></li>
<% end %>
</ul>
<% end %>
これlink_to book.name, controller: :books, action: :show, id: book.id
で問題なく動作しますが、同じことがはるかに簡単に達成できることがわかります。使ったらbooks_show_path(book)
ダメ。
私のルートは次のようになります。
ルート: 'authors#list'
match 'authors/list' => 'authors#list'
match 'books/list' => 'books#list'
match 'authors/:id/delete' => 'authors#delete'
match 'authors/:id/show' => 'authors#show'
match 'books/:id/show' => 'books#show'
ここで何が間違っていますか?仕事をするために何をする必要がありbooks_show_path(book)
ますか?