【问题标题】:Rails - Add games Association to usersRails - 向用户添加游戏关联
【发布时间】: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


【解决方案1】:

您在link_to 方法中调用games_path,但这会给您games#create 而不是favorite。你需要告诉 Rails 你想用什么名字,命名路由:post "games/:id/" =&gt; 'games#favorite', as: :favorite_game 并在你的视图中使用favorite_game_path(game)

【讨论】:

  • 谢谢它似乎有效,我的“通知”没有取游戏的名称(呈现“你收藏的#{@game.name}”我希望他拿了一个 ID,但无论如何,谢谢你非常;),很好的答案
  • 您必须使用" 字符串才能进行插值。将其更改为flash[:notice] = "You favorited #{@game.name}"
  • 谢谢 PoloniculMov,我会试试这个;)。我还添加了游戏和用户之间关系的独特性再次感谢
猜你喜欢
  • 2015-04-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多