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 аргумент для вас!

Простая ошибка

Другие вопросы по тегам