1

我对更新关联的公认方式感到困惑。假设有 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 中找到的值手动更新 params[:worker][:factory_id] 的值[:factory_id]。下面是我的 erb 代码,以防万一我应该在那里做一些不同的事情。此外,如果有帮助的话,Factory 类 has_many workers 和 Worker 类属于 Factory 类。

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

任何帮助是极大的赞赏。

4

1 回答 1

1

在 ERB 文件中执行此操作:

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

虽然,我会使用选择助手:

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

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

于 2012-12-28T10:21:10.163 回答