: отключенное поле не работает в fields_for

#ruby-on-rails #ruby-on-rails-3 #form-for #fields-for

#ruby-on-rails #ruby-on-rails-3 #форма-для #поля- для

Вопрос:

Я пытаюсь добавить выпадающий список отключенных в свою таблицу, который я в конечном итоге сделаю условным. Однако значение disabled, похоже, не добавляется в строку при ее запуске.

Если я проверю элемент на странице, вручную добавлю отключенные работы, но он не добавляется во время выполнения.

 = f.fields_for(:targets, qualification.target_for(@grandfather.user)) do |builder|
  %tr
    %td
      = builder.select :completed, qualification.level_options.map{|o| [o,o]}, :disabled => "disabled"
      = builder.hidden_field :qualification_id, :value => qualification.id
      = builder.hidden_field :id
  

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

1. В :disabled => "disabled" , значение "disabled" должно быть значением одного из <option> s выбора — т.е. qualification.level_options должен быть вызван элемент disabled . :disabled используется не для отключения всего элемента выбора HTML, а скорее для пометки <option> элемента как отключенного.

2. Забба, я не совсем тебя понимаю. Не могли бы вы немного уточнить, не является ли :disabled => ‘disabled’ функцией HTML5?

3. Я думаю, вы имеете в виду, что «отключено» является опцией в раскрывающемся списке. Тем не менее, я хочу отключить весь выпадающий список, используя функцию disabled: «отключено», чтобы вы не могли выбрать опцию из поля. level_options уже содержит параметры, доступные для выбора

Ответ №1:

Ознакомьтесь с API для Rails Form Helper API

 select(object, method, choices, options = {}, html_options = {})
  

Это добавлялось :disabled => "disabled" к параметрам вместо html_options. Это код для использования вместо (обратите внимание на пустой хэш для параметра options):

 builder.select(:completed, qualification.level_options.map{|o| [o,o]}, {}, {:disabled => "disabled"})
  

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

1. Его лучше использовать :readonly => true вместо :disabled => "disabled" . Поскольку поле :disabled => "disabled" с не включено в параметры для контроллера