2016-08-23 15 views
0

ユーザーとゲームの関連付けを構築しています。ユーザーはゲームをお気に入りに追加したり、関連付けることができます。しかし、私はルートやリンクに問題があります(おそらく、他の何か)。Rails - ゲームを追加するユーザーに関連付けます。

私はユーザーとゲームの間のテーブルに参加している:私はこれを行うとき

ゲームのIDとUser IDとGame_User

協会は、コンソールで正常に動作しています。

@user = User.find(session[:user_id]) 
@game = Game.find(params[:id]) 
@user.games << @game 

games_controller.rb:

def favorite 
    game = Game.find(params[:id]) 
    current_user.games << game 
    flash[:notice] = 'You favorited #{@game.name}' 
    redirect_to games_url 
end 

routes.rbを

get "games" => "games#index" 
post "games/:id" => 'games#favorite' 

そして、私は私のリンクと同じことをしたいと思います。ここで

は、ゲームのリストであり、好みのそれらへのリンクごと:

<% if current_user %> 
    <% @games.each do |game| %> 
     <tr> 
     <td><%= game.name %></td> 
     <td><%= game.plateform %></td> 
     <td><%= game.typegame %></td> 
     <td><%= link_to 'Show', game %></td> 
     <td><%= link_to 'Edit', edit_game_path(game) %></td> 
     <td><%= link_to 'Destroy', game, method: :delete, data: { confirm: 'Are you sure?' } %></td> 
     <td> <%= link_to "favorite", games_path, type: "favorite", method: :post %> </td> 
     </tr> 
    <% end %> 
<% end %> 

私の問題がある:私はリンクお気に入りをクリックすると、ユーザーとゲーム(複数可)との間の関連付けを作成します、それはあなたがあなたのlink_to方法でgames_pathを呼んでいるが、それはあなたの代わりにgames#createfavoriteを与える(DEF game.newを作成...)

+2

エラーが発生しますか?何か?あなたの実際の問題は何ですか? – PoloniculMov

+0

ああ、私の悪い、実際には、私はリンクをクリックすると、リストに新しいゲームを生成しているだけでなく、ユーザーにゲームを追加しています。 –

+0

'' rake routes'が出力するものを私に見せてもらえますか?私の推測では 'games_path'へのPOSTは別の場所に行くのです – PoloniculMov

答えて

1

を新しいゲームを生成しています。どの名前を使用したいのかをRailsに知らせる必要があります。ルート名はpost "games/:id/" => 'games#favorite', as: :favorite_gameで、favorite_game_path(game)という名前で表示されます。

+0

ありがとう、私の "通知"が動作しているようですゲームの名前をつける(あなたは#{@game.name}をお気に入りにしました)IDを取得してもらいたいと思いますが、とにかくありがとうございます;)、素晴らしい答え –

+0

補間に文字列を使用する必要があります作業。それを 'flash [:notice] =" {@ game.name}をお気に入りにしました "と変更してください。" – PoloniculMov

+0

ありがとうPoloniculMov、私はこれを試します;)私もゲームとユーザーの関係の一意性を追加しました –

関連する問題