根据我在下面的选择字段中的代码,我拥有所有public_campaigns
:
<%= f.select :campaign_id, @public_campaigns.map{|x| [x.name,x.id]} %>
public_campaigns
在控制器中定义为:
@public_campaigns = @logged_in_user.campaigns.order('created_at desc')
在表单中,我选择campaign
并填写表单的其余部分,然后在提交操作中创建一个邀请,其中campaign_id
取自我在表单中选择的campaign
,它可以是1
到n
我现在需要的是选择字段中的default item
,其值为0
并命名为"No campaign"
,这意味着我邀请其他人加入我没有的广告系列已创建且在邀请中,campaign_id
字段将为0
。
感谢您的时间。
答案 0 :(得分:1)
嗯,你能做到这一点的最快方法就是这样:
@public_campaigns = @logged_in_user.campaigns.order('created_at desc')
no_campaign = Campaign.new(:id => '0', :name => 'No Campaign')
@public_campaigns.unshift(no_campaign)
答案 1 :(得分:1)
你真的需要0吗?我认为使用{:include_blank =&gt; “没有竞选活动”}应该足够了吗?
试试这个:
<%= f.select :campaign_id, (@public_campaigns.map{|x| [x.name,x.id]} << ["No campaign",0]), {:selected => 0} %>
答案 2 :(得分:1)
我不确定你为什么不能这样做:
<%= f.collection_select :campaign_id, @public_campaigns, :id, :name, prompt: 'No campaign' %>
只需检查是否campaign_id.nil?
而不是为campaign_id