私はレールで最初のプロジェクトに取り組んでおり、タグの使用中に問題に遭遇しました。ユーザーがタグをクリックすると、そのタグに関連付けられているすべてのエントリが表示されるように機能しています。ただし、それらの名前をそのエントリの表示ページにリンクさせようとすると、次のエラーが表示されます。
No route matches {:action=>"show", :controller=>"characters", :anime_id=>#<Character id: 1, name: "Kamina", description: "Badass", occupation: "Team Dai-Gurren", anime_id: 1, created_at: "2013-06-06 01:00:57", updated_at: "2013-06-06 03:28:20">}
私は何時間もそれを修正しようとしてきましたが、運がありませんでした. 誰かがこの問題を解決するためのアドバイスを持っているなら、それは大歓迎です。
コントローラ:
class CharactersController < ApplicationController
def create
@anime = Anime.find(params[:anime_id])
@character = @anime.characters.create(params[:character])
redirect_to anime_path(@anime)
end
def show
@anime = Anime.find(params[:anime_id])
@character= @anime.characters.find(params[:id])
end
def index
@anime = Anime.find(params[:anime_id])
@characters= @anime.characters.all
end
def tagged
@anime = Anime.find(params[:anime_id])
if params[:tag].present?
@characters = @anime.characters.tagged_with(params[:tag])
else
@characters = @anime.characters.postall
end
end
end
ルート:
Animedb::Application.routes.draw do
resources :animes do
resources :characters
end
match 'tagged' => 'characters#tagged', :as => 'tagged'
意見:
<h1>Listing Characters</h1>
<table>
<tr>
<th>Name</th>
<th>Year</th>
<th>Season</th>
<th>Genre</th>
<th></th>
<th></th>
<th></th>
<% @characters.each do |character| %>
<tr>
<td><%= link_to character.name, anime_character_path(character) %></td>
</tr>
<% end %>
</table>