Ruby on Rails: как использовать select?

#ruby-on-rails #ruby

#ruby-on-rails #ruby

Вопрос:

У меня есть форма

   <% form_for(@xyz) do |f| %>
    <%= f.error_messages %>
      <%= f.label :name %>
      <%= f.text_field :name %>


      <%= f.label :description %>
      <%= f.text_field :description %>

      <%= f.label :type %> 
    <%= f.select :type, XYZ::ALL_TYPES %>
  <% end %>
  

Я добавил атрибут «metric_type» в эту форму, и я хочу использовать его, но не в этой форме.
У меня есть константа в файле модели
AXY = «axy»
BXY = «bxy»
CXY = «cxy»
ALL_METRICS_TYPE = [AXY,BXY,CXY]

Как я могу использовать приведенное выше в качестве выпадающего списка

Тип метрики:

Спасибо,

Ответ №1:

В целом я предлагаю вам использовать следующую методологию:

1) На ваш взгляд:

 <%= your_form_variable.select(: type,  Your_model:: ALL_METRICS_TYPE, {:include_blank => 'Please select'}) %>
  

2) в вашей модели:

 ALL_METRICS_TYPE = [["value which will passed and stored in db", 'what you want to display in the dropdown'], [...]]
  

Редактировать:

Чтобы использовать его вне формы, используйте помощник raw select, описанный здесь: http://api.rubyonrails.org/classes/ActionView/Helpers/FormOptionsHelper.html

 select("foo", "bar", Your_model:: ALL_METRICS_TYPE, {:include_blank => true})
  

Комментарии:

1. Спасибо, я знаю это, но у меня другой случай. Мне нужно использовать <% select %> после form_for scope, я скажу после <% end%> .

2. Что такое foo и bar здесь …?

3. 🙂 посмотрите на ссылку, они создадут имя вашего HTML-тега select

4. это все, что вы хотите, это будет передано в параметрах так, как вы его установили, никаких других последствий. Но если вы хотите, чтобы rails работал автоматически, вы должны придерживаться его соглашений: foo = название модели, bar = название столбца