Ruby on rails Rails 4:使用单选按钮驱动的数组更新属性

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

这个问题非常类似于:但我似乎无法跨越到我的用例

我正在为一个游戏建模,这个游戏总是有8个角色(:策略卡),我想把它们作为一个数组传递。这些角色中的每一个都可以是多个值中的一个

@games.select_strategy_卡传回我的散列:

{"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  %>