Как установить поле для чтения только в 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 будет иметь немного другое поведение, чем только для чтения.