Как установить поле для чтения только в rails 3.1.0 views?

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

  <% @quote.test_items.each do |t| %> 
    <%= f.association :test_items, :label => false, :selected => t.id %>
  <% end %>

Приложение использует simple_form. Большое спасибо.

Ответ 1

Я столкнулся с подобной проблемой, к счастью, есть простое решение.

Основная проблема заключается в том, что если вы используете :disabled => true с simple_form, вы не увидите это значение в контроллере. Когда вы передаете объект из HTML-формы, чтобы позднее привязать его к модели - вам нужны все эти атрибуты. :disabled => true однако не передает никакого такого атрибута.

Решением этого является использование :readonly => true - он защитит поле от пользовательской записи, и он все равно передаст значение параметра обратно контроллеру, чтобы вы могли привязать все к вашей модели.

Удачи.

См. https://github.com/plataformatec/simple_form/pull/367

Ответ 2

Я считаю, что вы просто проходите в :disabled => true. Мой опыт заключался в том, что опции "просто работают" с simple_form. Итак, в вашем случае:

<% @quote.test_items.each do |t| %> 
  <%= f.association :test_items, :label => false, :disabled => true, :selected => t.id %>
<% end %>

Из simple_form github repo:

Также можно предоставить опцию: disabled для SimpleForm, и она автоматически пометит оболочку как отключен классом css, так что вы можете также стирать метки, подсказки и другие компоненты внутри обертки.

Ответ 3

Верхние ответы выше неверны.

отключенный атрибут имеет другое поведение, чем только для чтения.

прочитайте и сравните их:

http://www.w3schools.com/tags/att_input_disabled.asp

Совет. Отключенные элементы в форме не будут отправлены.

http://www.w3schools.com/tags/att_input_readonly.asp

Правильный ответ - использовать

:readonly => true

что-то вроде этого:

<%= f.association :test_items, :label => false, :readonly => true, :selected => t.id %>

Ответ 4

Мне непонятно, может ли метод ассоциации принимать параметры HTML или нет, но если это так, вы можете передать disabled: 'disable', чтобы сделать его доступным только для чтения с фиксированным значением.

Я думаю, что вы можете выбрать фиксированное значение, передав ассоциацию как блок, как показано в документации по объединению:

f.association :company do |c|
  c.input :name, selected: 'selection'
  c.input :type
end

Что касается того, может ли весь список быть доступен только для чтения и все еще выпадающий список, единственные решения, которые я вижу из google, включают JS, например:

http://techeyes.blogspot.com/2007/11/making-html-select-readonly.html

Ответ 5

Да, что сказал @gk0r, так как это задокументировано здесь:

ПРИМЕЧАНИЕ. Параметры HTML disabled, readonly и multiple могут обрабатываться как логические. Поэтому указание :disabled => true даст disabled="disabled".

* disabled будет иметь немного другое поведение, чем только для чтения.