0

使用我在选择字段中的以下代码,我拥有所有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 itemin select 字段,它的值0和命名为"No campaign",这意味着我邀请某人参加我尚未创建的活动,并且在邀请中该字段campaign_id将为0

感谢您的时间。

4

3 回答 3

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)
于 2012-11-01T10:14:04.587 回答
1

你真的需要0吗?我认为使用 {:include_blank => "No campaign"} 就足够了?

试试这个:

<%= f.select :campaign_id, (@public_campaigns.map{|x| [x.name,x.id]} << ["No campaign",0]), {:selected => 0} %>
于 2012-11-01T11:56:07.230 回答
1

我不确定为什么你不能这样做:

<%= f.collection_select :campaign_id, @public_campaigns, :id, :name, prompt: 'No campaign' %>

只需检查是否campaign_id.nil?而不是分配任何值campaign_id

于 2012-11-01T12:01:55.187 回答