2011-08-05 2 views
13

제출 단추가있는 Ajax가 내장 된 Rails javascript를 가지고 있습니다. 그러나 드롭 다운 상자의 값을 변경하고 단추를 제거하면 제출하는 것이 좋습니다. 내 연구에서 올바른 솔루션처럼 보이지만 서버에 대한 요청이 없습니다. 여기 내 드롭 다운 형태의 코드는, 아직도 내가 추가하기 전에 일 제출 버튼이 있습니다 : onchange를 :레일스 드롭 다운의 양식 onchange 변경을 제출하려고 시도합니다.

여기
<% form_tag('switch_car', :method => :put, :remote => true) do %> 
    <div class="field"> 
    <label>Car Name:</label> 
    <%= select_tag(:id, options_from_collection_for_select(active_cars, "id", "name"), 
     :onchange => ("$('switch_car').submit()"))%><%= submit_tag "Switch Car" %> 
    </div>  
<% end %> 

은 생성 된 HTML이다 : 사전에 어떤 도움

<form accept-charset="UTF-8" action="switch_car" data-remote="true" method="post"> 
    <div style="margin:0;padding:0;display:inline"> 
    <input name="utf8" type="hidden" value="&#x2713;" /> 
    <input name="_method" type="hidden" value="put" /> 
    <input name="authenticity_token" type="hidden" value="PEbdqAoiik37lcoP4+v+dakpYxdpMkSm7Ub8eZpdF9I=" /> 
    </div> 
    <div class="field"> 
    <label>Car Name:</label> 
    <select id="id" name="id" onchange="$('switch_car').submit()"> 
     <option value="9">Truck</option> 
     <option value="10">Car</option> 
    </select> 
    <input name="commit" type="submit" value="Switch Car" /> 
</div> 

감사합니다.

프로토 타입 : :onchange => ("$('switch_car').submit()")

jQuery를 : 사용중인 JS 라이브러리에 따라

+1

어떤 자바 스크립트 라이브러리를 사용하고 있습니까? 귀하의 onchange는 Ruby 코드를 가지고 있습니다. 자바 스크립트 호출이어야합니다. –

+0

@MauricioLinhares Ruby on Rails 3과 함께 설치되는 라이브러리를 사용하고 있습니다. 그래서 자바 스크립트를 통해 양식을 제출하는 방법을 알아야합니까? – Xaxum

+0

죄송합니다, @MauricioLinhares 당신이 말하는 것을 봅니다. 나는 지금 remote_function을 가지고 그것을하기위한 레일을 얻으려고하지만 여전히 운이 없다. 솔루션을 찾는 데 어려움이 있지만 상당히 일반적이라고 생각합니다. 나는 단지 select에 양식을 제출하고 싶습니까? – Xaxum

답변

5

이것이 작동하도록하기 위해 할 수있는 일입니다. 나는 name => "switch_car"를 사용하여 switch_car라는 이름을 짓고 다음 javascript를 사용했다.

:onchange => ("javascript: document.switch_car.submit();") 

나는 더 나은 답변을 찾고 있으므로 뭔가를 찾으면 업데이트 할 예정입니다. 어떤 이유로 든 .js를 제출하지 않습니다. AJAX를 사용하여 변경중인 페이지 요소 만 업데이트하는 제출 버튼과 달리 HTML로 처리합니다. 그러나 이것이 내가 지금까지 찾을 수 있었던 최고의 것입니다.

5

:onchange => ("$('#switch_car').submit()")

당신은 버전이 3.1 이하 기본값과 레일을 사용하는 경우, 다음 프로토 타입은 기본입니다 도서관.

+0

감사합니다. 버전 3.0.9가 있으므로 첫 번째 옵션을 시도했습니다. 선택 상자에서 변경을 수행하면 요청이 서버로 전송되지 않습니다. 위의 코드를 업데이트했습니다. 내가 어디로 잘못 갈 수 있었는지 아는가? – Xaxum

+0

아직 운이 없습니다. 왜 서버에 요청을 보내지 않는지 알 수 없습니까? – Xaxum

+0

firebug (firefox plugin)를 설치하여 디버그하고 firebug 콘솔에서 javascript를 수동으로 실행하여 문제가 무엇인지 확인하십시오. –

2

jQuery를 사용하는 일반적인 솔루션 (I 양식의 이름을 알 필요가 없습니다)입니다 :

onchange: "$(this).parent('form').submit();" 
15

이 당신의 onchange를 교체,

onchange: "this.form.submit();" 
select_tag를 들어
1

, 단지 추가 :

{:onchange => "myHandler();" } 

당신의 핸들러가 될 것입니다 여기서

0 또한
this.form.submit(); 

, onchange를 당신이 선택 형태와 select_tag을 혼동하지 있는지 확인, 마지막으로 자본 C.

와 onChage을 시도 할 수도 작동하지 않는 경우. 내가 찾은 있지 않기 때문에

어쨌든 내 결과를 게시합니다,

Adding An Onchange Event To A Form Select

+1

죄송 합니다만'select_tag'을 사용하여'select'를 망치고 있습니다. 'select_tag'의 서명은 다음과 같습니다 : http://apidock.com/rails/v4.1.8/ActionView/Helpers/FormTagHelper/select_tag ** 옵션 파라미터는 ** 하나뿐입니다. 코드 예제에서 실제로 오류가 발생하고 있습니다. –

+0

고마워 마틴, 나는 두 사람을 구분할 것이다. – AmitF

2

이 잠시 동안 주변 것으로 보인다 선택한 경우에만 형태에 대해 비슷한 질문에 대한 내 대답을 참조하지만, 이 설명은 어디서나.

articlesubmit() 메소드 (jQuery 또는 Handler의 유무에 관계없이)를 통해 ajax 요청을 트리거 할 때의 문제점을 잘 설명합니다. 그런 다음 작성자는 AJAX 요청을 직접 작성하도록 권장합니다.그것은 필요하지 않으며 rails.js (jquery-jus gem) 내의 논리를 사용하기 위해 수행되어서는 안됩니다.

submit()이 발생하는 문제는 rails.js가 이름을 바꾼 submit.rails 이벤트를 바인딩하고 수신하기 때문에 수동으로 발생합니다. 제출을 수동으로 실행하려면 요소 나 양식에서

onchange: 'javascript: $(this).trigger("submit.rails") 

을 사용하십시오.

관련 문제