#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 = название столбца