2010-01-21 7 views
6

사용자 정의 폼 빌더가 있습니다.이 사용자 빌더의 이유 중 하나는 모든 폼에 명시 적으로 넣지 않으려는 일부 추가 매개 변수를 포함해야한다는 것입니다 내가 쓰는 모든 형태의 숨겨진 필드 태그.사용자 정의 레일 폼 빌더가있는 추가 필드

for_for(@foo, :builder => MyBuilder) do |f| 
    # stuff I shouldn't have to worry about 
    # this should be put in all the time without me having to do it 
    hidden_field_tag('extra', 'myextrainfo') 

    # normal things I would put in 
    f.text_field(:bar) 
end 

내가 내 사용자 지정 양식 빌더해야합니까, 아니면 무엇을 재정의 할 수 있습니다 또는 메소드 체인 (단지 URL의 PARAMS를 추가하지 않고) 형태로 몇 가지 추가 숨겨진 물건을 추가?

답변

5

다소 까다 롭습니다 (Ruby/Rails에 합당한 새로운 기능).하지만 해결책을 찾았습니다. 헬퍼 파일 (또는 필요에 따라 다른 위치)에 저장하십시오.

module ActionView::Helpers::FormHelper 
    def form_for_with_updated_code(record_or_name_or_array, *args, &proc) 
    form_for_without_updated_code(record_or_name_or_array, *args) { |f| 
     concat(hidden_field_tag('extra','info')) 
     proc.call(f) 
    } 
    end 
    alias_method_chain :form_for, :updated_code 
end 

form_for 메서드를 재정의하고 숨겨진 필드를 추가합니다. 추가 개인 옵션 (예 : 숨겨진 필드를 채우기 위해 extract_options!을 사용하는 *args 매개 변수)에 코드를 추가 할 수 있습니다.

+0

아주 좋습니다. 가득 찬 승리. 감사! –

관련 문제