У меня есть пользовательский FormBuilder, который перезаписывает значение поля text_.
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]
Но есть ли лучший способ?Большое спасибо