我有一个覆盖 text_field 值的自定义 FormBuilder。
class TimesheetFormBuilder < ActionView::Helpers::FormBuilder
def text_field(method, opts)
#Get a reference to the model object
object = @template.instance_variable_get("@#{@object_name}")
value = object.send(method)
(opts ||= {}).merge!(value: value + '(foo)')
super(method, opts)
end
end
我有一个嵌套表格。时间表有许多工作日志
<%= form_for @timesheet, :builder => TimesheetFormBuilder do |timesheet_form| %>
<%= timesheet_form.fields_for :worklogs do |worklog_form| %>
<%= worklog_form.text_field :monday %>
<% end %>
<% end %>
我遇到的问题是我不知道如何调用对象上的方法。
当我得到对象
object = @template.instance_variable_get("@#{@object_name}")
然后我得到一个错误
`@timesheet[worklogs_attributes][0]' 不允许作为实例变量名称
有一种方法可以解析,object_name
所以我得到了@timesheet
,worklogs
所以0
我可以做到
@timesheet.worklogs[0]
但是有更好的方法吗?非常感谢