我正在尝试通过link_to更新game_started属性。我也试过通过hidden_field使用form_for而没有运气。
我也一直收到以下错误
GamesController#update中的ArgumentError
分配属性时,必须将哈希作为参数传递。
使用Rails 5和Ruby 2.4
非常感谢任何解释!
show.html.erb
<% if @game.game_started %>
# some code
<% else %>
<%= link_to "Start The Game", game_path(@game, :game_started => true), :method => :put %>
<% end %>
GamesController
def edit
end
def update
@game = Game.find(params[:id])
if @game.update_attributes (params[:game_started])
redirect_to @game
end
end
def game_params
params.require(:game).permit(:game_type, :deck_1, :deck_2, :user_1, :user_2, :game_started)
end
答案 0 :(得分:0)
将其更改为
if @game.update_attributes (game_started: params[:game_started])
redirect_to @game
end
答案 1 :(得分:0)
show.html.erb 应更改为
<%= link_to "Start The Game", game_path(@game, :game => {:game_started => true}), :method => :put %>
控制器应为
if @game.update_attributes (game_started: params['game']['game_started'])
redirect_to @game
end
答案 2 :(得分:0)
错误告诉您,您正在将错误的参数传递给update_attributes
方法调用。它期待像{game_started: params['game_started']}
这样的哈希,而你只是给它params['game_started']
的值。当你给它一个值时,它不知道要更新的模型中的哪个字段。所以将代码更改为:
```
if @game.update_attributes(game_started: params[:game_started])
redirect_to @game
end
```