我想創建一個簡單的靜態值下拉列表,我可以在表單中的Ruby on Rails應用程序中的任何位置重複使用該列表。下拉列表是非常簡單的,像這樣:使用Rails創建可重複使用的下拉列表
<select>
<option value="5">5 minutes</option>
<option value="15">15 minutes</option>
<option value="30">30 minutes</option>
<option value="60">1 hour</option>
</select>
什麼是Rails的最便捷的方式來創建一個「控制」(我不知道這個詞用Rails甚至用)這樣的並能夠在表單中的任何位置使用它並將其綁定到模型類的屬性?
更新:感謝您的答案,這些似乎是非常好的解決方案。
然而,這將有可能擴展類的的form_for收益(不知道哪一個,是表單助手或FormBuilder?),爲了能夠做到這一點的看法:
<%= form_for(@myObj) do |f| %>
<%= f.select_duration :duration %>
<% end %>
我開始搜索如何擴展表單助手,但還沒弄明白。
UPDATE2:我無法回答我自己的問題,所以我把它放在這裏。
終於想出瞭如何去做。在創建應用程序/傭工form_helper.rb文件,並用下面的代碼擴展FormBuilder:
module FormHelper
def self.included(base)
ActionView::Helpers::FormBuilder.instance_eval do
include FormBuilderMethods
end
end
DURATIONS = [["5 Minutes", 5], ["15 minutes", 15], ["30 minutes", 30],["1 hour", 60]]
module FormBuilderMethods
def select_duration(method)
@template.select @object_name, method, @template.options_for_select(DURATIONS, @object.reminderTimeMinutes ? DURATIONS[@object.reminderTimeMinutes] : DURATIONS[0])
end
end
end
我不知道的是無論是持續時間常數的正確的地方(我很新的最後一件事紅寶石和紅寶石)。
正如我在回答中所解釋的,DURATIONS的定義以app/initializers中的.rb(帶有您選擇的名稱)進行。順便說一句,採取我的答案大部分是有點厚顏無恥,但不要把我的標記作爲答案。 – Snips
糾正我,如果我誤解了你的要求。但是你所採取的方法有點複雜,如果你能以非常簡單的方式做同樣的事情,就像我在下面的答案中所提到的那樣。記住原則KISS – Ross