RoR,将select_tag中的值放在params散列中

时间:2012-12-28 10:02:46

标签: activerecord associations update-attributes html-select

我对更新关联的可接受方式感到困惑。我们假设有2个模型,工人和工厂。编辑Worker时,会向用户显示包含工厂列表的select_tag。我的问题是factory_id不在params [:worker] [:factory_id]哈希中,而是在params [:factory_id]哈希中。最终结果是,当调用我的worker.update_attributes时,不更新factory_id,因为它不在:worker哈希中。

我的问题是我是否应该通过修改我的erb文件来尝试将我的factory_id变为params [:worker]哈希,或者我应该手动更新params [:worker] [:factory_id]中的值与值在params [:factory_id]中找到。下面是我的erb代码,以防万一我应该在那里做些什么。此外,Factory类has_many worker和Worker类属于Factory类,如果有帮助的话。

<div>
  <%= label_tag :factory , "Factory" %><br />
  <%= select_tag "factory_id",
     options_from_collection_for_select(@state_factories... %>
</div>

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

在ERB文件中执行:

<%= select_tag "worker[factory_id]", options_from_collection_for_select(@state_factories... %>

虽然,我会使用select helper:

<%= select "worker", "factory_id", options_from_collection_for_select(@state_factories... %>

因为这会在编辑时自动选择工厂。