我正在构建用户和游戏之间的关联,用户可以将游戏收藏或关联到他们的个人资料中。但是我遇到了路线或链接的问题(我猜,也许是其他的东西)。
我在用户和游戏之间有一个联接表:
具有游戏ID和用户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 %>
我的问题是:创建用户和游戏之间的关联,当我点击链接收藏夹时,它会生成一个新游戏(def create game.new ...)
答案 0 :(得分:1)
您在games_path
方法中调用了link_to
,但这会给您games#create
而不是favorite
。您需要告诉Rails您要使用的名称,使用命名路线:post "games/:id/" => 'games#favorite', as: :favorite_game
并在视图中使用favorite_game_path(game)
。