Draper导致text_field输出不正确的结果

时间:2014-08-05 04:28:52

标签: ruby-on-rails-4 draper

我使用draper来清理一些视图逻辑。我有一些代码:

装饰:

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 个答案:

答案 0 :(得分:0)

原来我错误地使用了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参数!

简单的错误。