Options_for_select - как выбрать, что находится в базе данных? - PullRequest
5 голосов
/ 20 октября 2010

У меня есть сложная форма (например, Ryan B's Complex Form Railscasts), где у меня есть несколько уровней таблиц базы данных, которые изменяются одновременно.правильное целое число в базе данных.Но, несмотря на многочисленные попытки, я не могу заставить его правильно отразить значение CURRENT базы данных.Как мне разобраться в этом коде?

<%= o.select :weighting, options_for_select([
  ["Correct", "4", {:class=>"bold"}],
  ["Good", "3"],
  ["Average", "2"],
  ["Poor", "1"], 
  ["Incorrect", "0", {:class=>"bold"}] ], :weighting), {},
  html_options = {:class => "listBox", :style=>"float:left;"} %>

Спасибо.

Ответы [ 2 ]

12 голосов
/ 20 октября 2010

Вы на правильном пути, но не совсем там.

В то время как последний аргумент для options_for_select должен быть значением выбранной опции.Значение, которое вы вводите :weighting, является символом, который не соответствует значению какой-либо из указанных вами опций.

Вам нужно будет указать фактическое значение.Если вы использовали объект экземпляра для построения формы как в

<%form_for @whatever do |o|%>
...

Вы можете просто использовать @whatever.weighting.to_s как в:

<%= o.select :weighting, options_for_select([
  ["Correct", "4", {:class=>"bold"}],
  ["Good", "3"],
  ["Average", "2"],
  ["Poor", "1"], 
  ["Incorrect", "0", {:class=>"bold"}] ], @whatever.weighting.to_s), {},
  html_options = {:class => "listBox", :style=>"float:left;"} %>

В противном случае, есть способ получить объектблочная переменная формы o.Но это портит внутренние компоненты, которые могут измениться при обновлении.

Редактировать: В случае, когда вы работаете с полями для и несколькими частями, вы можете получить конкретный объект изпеременная блока конструктора форм. с помощью средства доступа к объекту.

Повторное использование приведенного выше примера примерно так, чтобы использовать текущий вес каждого дочернего экземпляра в разделе этого экземпляра формы.может также использоваться в частичных операциях.

0 голосов
/ 17 декабря 2012

Вторая попытка =)

<%= f.label :priority %>
<%= f.select(:priority, options_for_select({"Stat" => "1", "Urgent" => "2", "Regular" => "3", "Safety" => "4"}, @servicerequest.priority), :prompt => "Choose") %>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...