【发布时间】:2013-04-13 02:58:28
【问题描述】:
我有两个独立的“组件”模型,联系人和文章。联系人有多种类型(生产商、出口商等...)。
在新文章表单中,我有一个包含联系人(id 和标题)的下拉选择器,并且希望将选定的值和文本存储在文章表中。
在新文章表单视图中:
<%= f.select :producer_id, options_for_select(producers, @article.producer_id) %>
这行得通,producer_id 存储在文章表中。
这对我来说很清楚且合乎逻辑,但在某些情况下,我还需要将所选联系人的标题存储在 producer_title 中。
我已经阅读了许多不同的选项,例如“在模型中执行,保存前”或“在控制器中执行”,并且我已经在控制器中完成了。
文章控制器(仅更新的一部分):
#cont_name is producer title from Contacts
def update
params[:article][:producer_title] = Contact.where(id: params[:article][:producer_id]).pluck(:cont_name).first
end
这可行,但它是解决此问题的最佳实践方法吗?
另外,如果我将params[producer_id] 部分更改为使用:id: params[:producer_id],为什么我不能让它工作?
最好的问候和感谢。
【问题讨论】:
标签: ruby-on-rails ruby form-submit before-save