【发布时间】:2016-08-23 14:35:40
【问题描述】:
我正在用户和游戏之间建立关联,用户可以收藏游戏或将游戏与他们的个人资料相关联。但是我遇到了路线或链接的问题(我猜,也许是其他问题)。
我在用户和游戏之间有一个连接表:
具有游戏 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 ...)
【问题讨论】:
-
您收到错误消息还是什么?你的实际问题是什么?
-
哦,是的,我的错,实际上,当我点击链接时,它会为列表生成一个新游戏,而不仅仅是向用户添加一个游戏。这就是为什么我认为我遇到了路径或路线问题;)“最喜欢的”动作没有发生。
-
你能告诉我
rake routes的输出吗?我的猜测是 POST 到games_path去别的地方 -
是的,我有 2 个“POST”> POST /games(.:format) games#create 和另一个 POST /games/:id(.:format) games#favorite
标签: ruby-on-rails ruby forms ruby-on-rails-4