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_idcampaign1n

私が今必要としているのは、 の値をdefault item持つ in select フィールドを持つことです。これは、まだ作成していないキャンペーンに誰かを招待することを意味し、招待ではフィールドは になります。0"No campaign"campaign_id0

お時間をいただきありがとうございます。

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 => "キャンペーンなし"} の使用で十分だと思いますか?

これを試して:

<%= 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 に答える