0

ドレーパーを使用して、一部のビュー ロジックをクリーンアップしています。私はそのようないくつかのコードを持っています:

デコレーター:

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">

ここで何が起こっているのか完全にはわかりません。誰でも助けを提供できますか?ドレーパーを使用し、テンプレートにロジックを含める前は、すべてが正常に機能していました。また、ルビーについてもあまり知らないので、明らかな何かが欠けている可能性があります。申し訳ありません!

4

1 に答える 1

0

text_field タグを間違って使用していたことが判明しました。適切な使用法は次のとおりです。 h.text_field :event_type, :name, {id: "event_type_#{object.id}_name", value: object.name, disabled: true}

以前は引数を提供するwithを:event_type使用していたので、シンボルを追加する必要がありました!form_forf.text_fieldobject_name

単純な間違い。

于 2014-08-05T05:03:22.013 に答える