0

我正在使用 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 并在模板中有逻辑之前,一切都运行良好。我也不知道很多红宝石,所以我可能会遗漏一些明显的东西,对不起!

4

1 回答 1

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参数的 a !

简单的错误。

于 2014-08-05T05:03:22.013 回答