2009-05-11 3 views
2

다음과 같은 레일 폼 (작동)이 있지만 submit_tag를 제거하고 라디오 버튼을 선택하자마자 폼을 제출하고 싶습니다. 어떻게해야합니까?라디오 버튼 선택에 레일 양식 제출하기

<% form_tag({ :controller => "votes", :action => "create", :id => @item.id }) do %> 
    <p> 
    <% for i in 1..10 do %> 
     <%= radio_button_tag :rating, i %>&nbsp;<%=h i %>&nbsp; 
    <% end %> 
    </p> 
    <p> 
    <%= submit_tag "Create" %> 
    </p> 
<% end %> 

답변

7

정확한 해결책을 찾았습니다. (입력 사용자 덕분에 Google 검색을 재정의하는 데 도움이되었습니다.) 모두가 바른 길을 가고 있었지만 아무도 자리를 잡지 못했습니다.

'false, : onclick => "this.parentNode.submit();"'을 radio_button_tag 양식 도우미에 추가하는 것만으로도 충분했습니다. false가 선택 되었든 안되든, 나머지는 명백합니다. 나는 비슷한 일을하고

<% form_tag({ :controller => "votes", :action => "create", :id => @item.id }) do %> 
    <% for i in 1..10 do %> 
     <%= radio_button_tag :rating, i, false, :onclick => "this.parentNode.submit();" %>&nbsp;<%=h i %>&nbsp; 
    <% end %> 
<% end %> 
+0

레일 버전 4.2에서 작동하지 않습니다! :/ –

+0

Yesss 감사합니다. 시간이 많이 들었습니다. –

0

를 사용하여 자바 스크립트

를 사용하여 각 라디오 버튼의 OnClick() 이벤트가 제출 버튼() 제출 호출하는 함수를 호출합니다.

레일스의 RJS에 익숙하지 않지만 비교적 쉽습니다.

1

this.formName.submit()을 호출하는 라디오 버튼에 onClick 이벤트를 추가 할 수 있습니다. 여기서 formName은 양식 ID입니다. 라디오 버튼을 클릭하면 제출 이벤트가 트리거됩니다.

0

이렇게 눈에 띄지 않게 달성하는 가장 좋은 방법은 lowpro와 prototype입니다. 그렇게하면 모든 이벤트 핸들러를 자바 스크립트로 가져와 뷰 코드를 오염시키지 않아도됩니다. 그것은 자바 스크립트 이벤트를 처리하는 매우 매끄러운 방법입니다. 추천.

+0

레일즈는 사실 자바 스크립트 라이브러리를 중심으로 (내가 생각하기에) 자바 스크립트를 망칠 필요가 없으며 레일스 HTML 헬퍼를 사용하여 자바 스크립트를 읽기 쉽고 자동 생성되도록 만든다. . – Ash

+1

올바른 레일즈는 자동으로 프로토 타입을 사용합니다. 문제는이 도우미가 꽤 못생긴 자바 스크립트로 코드를 오염 시킨다는 것입니다. prototype과 함께 lowpro를 사용하여 javascript를 눈에 잘 띄지 않게 만들고 javascript 코드를 .js 파일로 옮기는 것이 좋습니다. 결과적으로 귀하의보기 코드가 훨씬 깨끗해질 것입니다. – nitecoder

1

그래서이 질문은 정말 도움이 :

올바른 해결책은 지금처럼 보인다.

는 또한 애쉬의 대답에, 위의 onclick 함수를 내가 나에게 비트와 잘 작동 아래의 양식을 변경, 작동하지 않는 것을 발견 :
<% form_tag({ :controller => "votes", :action => "create", :id => @item.id }) do %> 
    <% for i in 1..10 do %> 
     <%= radio_button_tag :rating, i, false, :onclick => "this.form.submit();" %>&nbsp;<%=h i %>&nbsp; 
    <% end %> 
<% end %> 

은 누군가 도움이 될 바랍니다.