0

如何将数据字段添加到此 options_for_select 中的选项?这适用于 Rails 2。

我想添加类似的东西

data-masterlocation-name="<%= location.masterlocation.inst_name %>" 

data-masterlocation-id="<%= location.masterlocation.id %>"

到每个选项。我尝试遵循这种方法(Rails Formtastic:将“data-”字段添加到选项标签),但它似乎不适用于我的情况。在此先感谢您的帮助!

地图助手:

module MaptryHelper

  def options_for_select(locations)
    locations.map do |location|
      [location.masterlocation.name, location_string(location.masterlocation)]
    end
  end

  def location_string(masterlocation)
    "#{masterlocation.street_address}, #{masterlocation.city}, #{masterlocation.state}, #{masterlocation.zip}"
  end

end 

看法

<%= f.select :start, options_for_select(@itinerary.locations),{}, :id=>"startdrop", :name=>"startthere" %>     

最终版作品

帮手

module MaptryHelper

  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
    }
  end
end

看法

<%= f.select :start, options_for_select(@itinerary.locations), {}, {:id=>"startdrop", :name=>"startthere"} %>      
4

1 回答 1

0

你不能用这种方法做到这一点。但是,您可以这样写:

<%= f.select :start, location_options(@itinerary),{}, :id=>"startdrop", :name=>"startthere" %>     

在你的助手中:

def location_options(itinerary)
  itinerary.locations.map do |l|
    content_tag "option", l.name, location_option_attributes(l)
  end.join("\n")
end

private

def location_option_attributes(location)
  {
    :id => location.id,  
    :"data-masterlocation-name" => location.masterlocation.inst_name,
    :"data-masterlocation-id" => location.masterlocation.id
  }
end
于 2013-08-31T03:03:04.317 回答