需要将f.select字段中的默认值添加到现有字段 - rails 3.2

时间:2012-11-01 10:06:39

标签: ruby-on-rails ruby-on-rails-3.2

根据我在下面的选择字段中的代码,我拥有所有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 ,它可以是1n

之类的任何内容

我现在需要的是选择字段中的default item,其值为0并命名为"No campaign",这意味着我邀请其他人加入我没有的广告系列已创建且在邀请中,campaign_id字段将为0

感谢您的时间。

3 个答案:

答案 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

指定任何值