Ruby on rails Rails 4:使用单选按钮驱动的数组更新属性
这个问题非常类似于:但我似乎无法跨越到我的用例 我正在为一个游戏建模,这个游戏总是有8个角色(:策略卡),我想把它们作为一个数组传递。这些角色中的每一个都可以是多个值中的一个 @games.select_strategy_卡传回我的散列:Ruby on rails Rails 4:使用单选按钮驱动的数组更新属性,ruby-on-rails,arrays,radio-button,Ruby On Rails,Arrays,Radio Button,这个问题非常类似于:但我似乎无法跨越到我的用例 我正在为一个游戏建模,这个游戏总是有8个角色(:策略卡),我想把它们作为一个数组传递。这些角色中的每一个都可以是多个值中的一个 @games.select_strategy_卡传回我的散列: {"Initiative" => 1, "Diplomacy" => 2, "Political" => 3, "Logistics" => 4, "Trade" => 5, "Warfare" => 6, "Technol
{"Initiative" => 1, "Diplomacy" => 2, "Political" => 3, "Logistics" => 4, "Trade" => 5, "Warfare" => 6, "Technology" => 7,"Imperial" => 8, "Leadership" => 1,"Diplomacy II" => 2,"Assembly" => 3,"Production" => 4,"Trade II" => 5,"Warfare II" => 6,"Technology II" => 7,"Bureaucracy" => 8,"Imperial II" =>8, "Trade III" => 5,"Political II" => 3,"Assembly II" => 3}
以下是我目前掌握的代码:
<% i=[*1..8].each do |v| %>
<div>
<h2><%= v %></h2>
<% @game.select_strategy_cards.each do |key, value| %>
<% if value == v %>
<%= f.label key %>
<%= radio_button_tag "game[strategy_cards][#{value}]", key %>
<% end %>
<% end %>
</div>
<% end %>
但它并没有更新:战略卡。这是我的许可证:
def game_params
params.require(:game).permit(:shattered_empire, :shards_of_the_throne, :number_of_players, {:rules => []}, {:strategy_cards => []}, :players, {:races => []})
end
更新2
因此,问题似乎是:
不允许的参数:1、2、3、4、5、6、7、8
把我的许可证换成许可证!允许散列通过,但这似乎不是最优的
更新3
有点恶心但是
def game_params
params.require(:game).permit(:shattered_empire, :shards_of_the_throne, :number_of_players, {:rules => []}, {:strategy_cards => [:"1",:"2",:"3",:"4",:"5",:"6",:"7",:"8"]},:players, {:races => []})
end
看来你该换衣服了
<%= radio_button_tag "game[strategy_cards][#{value}]", key %>
致:
这样,它们被列为
1..8
,而不是您的“角色”值。我尝试过的一件事。因为value==v,所以没有任何区别。我想我真的想要v-1,所以我对数组进行了适当的索引。到底是什么问题?参数提交不正确吗?是的,就是这样。从记录器上看,似乎正在正确创建内容。将在更新中发布。它创建了一个散列,但属性没有得到更新。我也会发布许可证。好的,我想我开始明白发生了什么。您还可以发布发送到服务器的原始参数吗?它正在更新中。问题是,编写的代码将策略卡视为另一个散列。它在参数中通过(例如)“8”=>“Imperial II”。所以:8现在是一个参数。如果能按预期将其传递到阵列,那将很好,但它正在工作。
<%= radio_button_tag "game[strategy_cards][#{value}]", key %>
<%= radio_button_tag "game[strategy_cards][#{v}]", key %>