Как мне установить выбранную опцию в этой форме выбора 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" } %>
Другие вопросы по тегам