除正常提示外,在Rails collection_select中包含自定义ID和值:或:include_blank?

时间:2017-06-23 10:04:48

标签: ruby-on-rails

除正常提示外,在Rails collection_select中包含自定义ID和值:或: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>

文档没有帮助。

1 个答案:

答案 0 :(得分:0)

您可以利用OpenStruct数据结构。

  

OpenStruct是一种类似于Hash的数据结构,允许使用   任意属性的定义及其伴随值。   这是通过使用Ruby的元编程来定义方法来实现的   关于班级本身。

我认为你的控制器里有这样的东西。

@events = Event.where(...)

然后,您可以在控制器中执行此操作。

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

然后就像你之前的观点一样。 @events中的所有内容现在都响应date_formatted