Отображение дополнительных атрибутов для тега параметра в форме выбора - PullRequest
1 голос
/ 15 ноября 2011

<% semantic_form_for (@buss, {: url => url,: html => {....}}) do | f |%>
....
<% = f.input: страна,: label => 'Страна:',: include_blank => true%>
....

и выбор страны отображается как ..

 <li class="select required" id="business_country_input">
    <label for="business_country_id">Country:</label>
    <select id="business_country_id" name="business[country_id]">
      <option value=""></option>
      <option value="221">Åland Islands</option>
      <option value="32">Algeria</option>
      <option value="9">American Samoa</option>
     </select>
  </li>

Итак, как мне добавить дополнительные параметры для тега параметра, скажем, например, мне нужно что-то вроде

 .....
  <option value="221" country-code="AA">Aland Islands</option>  
  <option value="32"  country-code="BB">Algeria</option>  
  <option value="9"  country-code="CC">American Samoa</option>  
 .....

В основном что-то вроде

<select id="country">
  <% @countries.each do |c| %>
     <option value="<%= c.id %>" country-code="<%= c.code %>"><%= c.name %></option>
  <% end %>
</select>

Как это можно сделать с помощью formtastic?.

1 Ответ

4 голосов
/ 15 ноября 2011

Сначала определите помощника для создания пользовательских настроек страны:

def custom_country_options
  countries = ActionView::Helpers::FormOptionsHelper::COUNTRIES.map do |c|
    [c.downcase, c, {:country-code => c[0..1]}]
    #=> ["algeria", "Algeria", "Al"] 
  end

  return options_for_select(countries)
end

, затем в своей форме вы сможете выполнить:

<%= f.input :country, :as => :select, :collection => custom_country_options %>

Примечание: есть вероятность, чтоf.input :country всегда будет создавать раскрывающийся список стран по умолчанию, возможно, вам придется сделать f.input :custom_country или аналогичный.

...