Draper заставляет text_field выводить неверные результаты
Я использую Draper для очистки логики представления. У меня есть код как таковой:
Decorator:
class EventTypeDecorator < Draper::Decorator
delegate_all
def name_field
if object.name == 'Miscellaneous'
h.text_field object, :name, {id: "event_type_#{object.id}_name", disabled: true}
else
h.text_field object, :name, {id: "event_type_#{object.id}_name"}
end
end
end
Форма:
= form_for event_type, remote: true do |f|
...
= f.label :name, 'Event type name:'
...
Выход:
<input disabled="disabled" id="event_type_1_name" name="#<EventType:0x007f9db6df9cf0>[name]" type="text">
Ожидаемый результат:
<input value="Miscellaneous" disabled="disabled" id="event_type_1_name" name="event_type[name]" type="text">
Я не совсем уверен, что здесь происходит. Кто-нибудь может предложить помощь? Все работало нормально, прежде чем я использовал draper и имел логику в шаблоне. Я также не знаю много рубина, поэтому я могу упустить что-то очевидное, извините!
1 ответ
Оказывается, я неправильно использовал тег text_field. Правильное использование:
h.text_field :event_type, :name, {id: "event_type_#{object.id}_name", value: object.name, disabled: true}
Мне нужно было добавить :event_type
символ, потому что я ранее использовал form_for
с f.text_field
который обеспечивает object_name
аргумент для вас!
Простая ошибка