我有一个包含2个字段的Rails模型:'name'和'bucket'。 Name是一个字符串,bucket是以下形式的哈希:bucket:{red:1,green:2,...}。
我创建了一个rails表单来填充这些字段,但是当名称正常工作时,其余部分甚至不会显示为值。
当我尝试将颜色绑定到用户提供的值时,默认值为0时,这是不起作用的。
<% @board.fetch_all_colors.each do |color| %>
<%= form.label color.to_sym, "#{color}:" %>
<div class="input">
<%= form.text_field :bucket, value: 0.0 %>
</div>
<% end %>
问题是当我调试和打印params时,我只找到一个空桶哈希。一个问题似乎是因为每个循环,我只得到最后一个输入文本。
编辑:我找到了一个解决方法,让我占了一半。而不是text_field,我使用以下内容:
text_field_tag "bucket[]"
以上使用我的输入并将其放入数组中。问题在于,由于输入是动态的(并且可能有标签来去,我不能保证数组的位置(例如,第3个位置总是'红色')。我可以使用类似上面的内容但是哈希?
答案 0 :(得分:0)
虽然rails DB驱动程序支持类似JSON的对象,但其余的rails堆栈并没有用于指定多值列属性的无缝API。
您需要在控制器中根据自定义属性动态构建哈希值,这些属性与您的模型没有1:1的映射关系。
或者以类似Rails的方式,您可以使用has_many
关系,将buckets
作为单独的模型存储在与Board
模型连接的数据库中。 accepts_nested_attributes_for
会帮助你做到这一点。