1
text_field의 값을 덮어 쓰는 사용자 지정 FormBuilder가 있습니다.중첩 된 양식에 대한 서브 클래 싱 레일 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]
그러나 더 좋은 방법이 있습니까? 개체 = @ template.instance_variable_get (@object_name) : 많은 감사
는
는이 뜻 텍스트 필드의 값입니다
@object
을 사용하는 것입니다? 내가 볼 수 있도록 최종 코드 줄을 보여주십시오. 나는 똑같은 정확한 오류 메시지를 가지고있다. 그러나 나는 당신의 대답을 여기에서 이해하지 못한다. 객체 = @ template.instance_variable_get ("@ 번호 {@ OBJECT_NAME}") 올바른인가요 : 우리는 모두이 줄을 필요가 없습니다처럼 – MattSlay값은 = @ object.send (방법) –
그래서 것 같습니다? – MattSlay