2017-06-23 10 views
0

通常のプロンプト以外に、Railsのcollection_selectにカスタムIDと値を含めます:or:include_blank?通常のプロンプトの他に、Railsのcollection_selectにカスタムIDと値を含めます:or:include_blank?

<%= f.collection_select :id, @events, :id, :date_formatted, { prompt: "Select..." } %> 

が生成する:

<select name="event[id]" id="event_id"> 
<option value="">Select...</option> 
<option value="16">26.06.15</option> 
<option value="11">07.06.15</option> 
<option value="20">11.05.15</option> 
<option value="1">30.11.14</option> 
<option value="14">26.07.14</option> 
<option value="10">27.02.13</option> 
<option value="2">11.12.12</option> 
<option value="19">26.06.12</option> 
<option value="8">10.06.12</option> 
<option value="4">21.08.11</option> 
<option value="15">26.04.11</option> 
<option value="12">14.02.11</option> 
<option value="13">04.12.10</option> 
<option value="7">06.11.10</option> 
<option value="18">05.10.10</option> 
<option value="6">30.01.10</option> 
<option value="17">08.03.09</option> 
<option value="5">20.01.09</option> 
<option value="9">04.11.08</option> 
<option value="3">24.04.08</option> 
</select> 

私は自分自身を含める:助けない

<option value="something">Whatever</option> 

ドキュメント。

+3

「@ events」に要素として値を含めるのが簡単な方法です。 –

+0

これは、通常のイベントとしてdate_formattedに応答できるものに値をラップする必要があることを意味します...あまり良くありません。 – n1ck

+0

または「下位レベル」に移動して「select_tag」と「options_for_select」を使用できます。あなたの電話。 –

答えて

0

データ構造OpenStructを利用できます。

OpenStructは、ハッシュと同様のデータ構造であり、 の値を伴う任意の属性の定義を可能にします。 これは、Rubyのメタプログラミングを使用して、クラス自体にメソッド を定義することによって達成されます。

あなたのコントローラには次のようなものがあります。

@events = Event.where(...) 

あなたは、代わりにあなたのコントローラでこれを行うことができます。

@events = [OpenStruct.new(id: 'something', date_formatted: 'some_other_value')] 
@events << Event.where(...) 
@events.flatten! 

また、以前のように表示されます。 @eventsのすべてが今すぐに応答しますdate_formatted

関連する問題