我使用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并在模板中使用逻辑之前,一切正常。我也不知道很多红宝石,所以我可能会遗漏一些明显的东西,抱歉!
答案 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
参数!
简单的错误。