Как мне установить выбранную опцию в этой форме выбора Rails 2?
Я редактирую приложение Rails 2. В нем пользователь отправляет форму, которая включает в себя раскрывающееся меню, и эта информация создает запись в моей базе данных. Когда пользователь отправляется на редактирование записи, я хочу показать сохраненную "выбранную" опцию в выпадающем меню. Я продолжаю получать ошибки, однако. Вот моя установка:
Вид Выбрать поле
<% form_for @newsavedmap, :html=>{:id=>'createaMap'} do |f| %>
<%= f.select :start, options_for_select(@itinerary.locations), {:include_blank => true}, {:id=>"startdrop" } %>
Форма Помощник
def options_for_select(locations)
locations.map do |l|
content_tag "option", l.masterlocation.name, location_option_attributes(l)
end.join("\n")
end
private
def location_option_attributes(location)
{
:value => "#{location.masterlocation.street_address}, #{location.masterlocation.city}, #{location.masterlocation.state}, #{location.masterlocation.zip}",
:id => location.masterlocation.id,
:"data-masterlocation-name" => location.masterlocation.name,
:"data-masterlocation-id" => location.masterlocation.id,
:"data-masterlocation-latitude" => location.masterlocation.latitude,
:"data-masterlocation-longitude" => location.masterlocation.longitude
}
end
Я попытался сделать вид выглядит так:
<%= f.select :start, options_for_select(@itinerary.locations, @newsavedmap.start), {:include_blank => true}, {:id=>"startdrop" } %>
Но я получаю неправильное количество аргументов (2 для 1)) для этой строки. Также попробовал
<%= f.select :start, options_for_select(@itinerary.locations), {:selected => @newsavedmap.start, :include_blank => true}, {:id=>"startdrop" } %>
Но ничего не выбрано, когда я иду редактировать сохраненную карту. Я пытался перейти по этим ссылкам, и продолжаю вычеркивать. Ценю любую помощь, которую вы можете предложить!
Rails select helper - По умолчанию выбрано значение, как?, Rails form_for выберите тег с выбранным параметром, Rails select helper - Значение по умолчанию выбрано, как?
2 ответа
Вы можете попробовать что-то вроде этого в вашем помощнике
def options_for_select(locations, selected=nil)
locations.map do |l|
tag_options = location_option_attributes(l)
if l == selected
tag_options[:selected] = "selected"
end
content_tag "option", l.masterlocation.name, tag_options
end.join("\n")
end
затем вызовите поле, как вы пытались раньше.
<%= f.select :start, options_for_select(@itinerary.locations, @newsavedmap.start), {:include_blank => true}, {:id=>"startdrop" } %>
Вы можете передать еще один параметр для выбора значения следующим образом:
<%= f.select :start, options_for_select(@itinerary.locations), :selected => @newsavedmap.start, {:include_blank => true}, {:id=>"startdrop" } %>