我对更新关联的可接受方式感到困惑。我们假设有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>
非常感谢任何帮助。
答案 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... %>
因为这会在编辑时自动选择工厂。