我试图将一些数据附加到我的表单而不直接链接到我的模型。
我可以使用radio_button
进行操作,但不能使用select
(collection_select
等)。
这是我的代码:
= form_for @user, url: user_path(@user) do |f|
// This is working
= f.radio_button :my_field_not_in_model, true, checked: true
| Yes
= f.radio_button : my_field_not_in_model, false, checked: false
| No
br
// This is not working
= f.label 'Another user'
= f.collection_select :reference_user_id, @user.group.users, :id, :email
基本上,在最终更新之前删除此属性之前,我想附加一个引用用户对我的控制器进行特殊分析。每次我需要更多数据在我的控制器上进行特殊处理时,我都不想在我的模型上创建attr_accessor
。
答案 0 :(得分:3)
问题源于您使用form_for
表单构建器生成选择值。如果您检查docs,您将看到collecion_select
期望一个对象,并将返回在所述对象上调用的指定方法中的值作为其值。< / p>
您需要的是常规选择标记
select_tag "reference_user_id", options_from_collection_for_select(@users.group.users, :id, :email)
这应该为您的目的提供正确的HTML。
有关select_tag
或docs使用情况的详细信息,请参阅these docs,了解有关options_from_collection_for_select
的更多信息。