2013-02-05 3 views
0

폼이 있고 사용자가 제출 단추를 누르는 동안 show_msg 매개 변수 (부울 매개 변수)를 업데이트하려고합니다. 사용자가 상자를 선택하고 submit을 누르면 TRUE로 설정하고 싶습니다. 그렇지 않으면 FALSE입니다.테이블의 부울 셀 업데이트

그래서 팝업 창이있는 기본 HTML이 있습니다. 이 팝업 창에서 내 양식을 작성했습니다.

<form name="input" action="#" method="post"> 
    <input type="checkbox" id="mycheckbox">Don't show me again<br> 
    <input type="submit" id="Submit"> 
</form> 

이 내 자바 스크립트입니다 : (? 난 그냥이 팝업 창을 닫아야 할 '행동'에 쓰기 무엇을해야 )

$("#submit").click(function() { 
    $.ajax({ 
    ## the url is the controller 
    url: '/welcome', 
    type: 'PUT', 
    data: {show_msg: $("#mycheckbox").is(":checked")} 
    }); 
}); 

이 내 컨트롤러 :

class WelcomeController < ApplicationController 

def update 
    @user = User.find(params[:id]) 

    respond_to do |format| 
     if @user.update_attributes(params[:show_msg]) 
      format.html { redirect_to @user, notice: 'You will never see this message again.' } 
      format.json { head :no_content } 
     end 
    end 
end 

도움을 주셨습니다.

+1

아약스 URL에서 업데이트 할 레코드의 ID를 추가하십시오. 나는'url : '/ welcome'+ some_method_to_get_id'를 말합니다. –

+0

URL에서 자동으로 가져와야한다고 생각합니다 (put 요청이기 때문에). –

+1

아니오 put 요청은 숨겨진 필드 어딘가에 id가 있어야하거나 url_parameter로 전달되어야 함을 의미합니다. 레일에서 폼 헬퍼를 사용하면 전달 된 객체가 마술처럼 작동합니다. 그러나 귀하의 경우에는 명시 적으로 지정해야합니다. :) –

답변

2

레일 form_for 태그로 양식을 작성하십시오.

그러면 제출 단추에서 이벤트를 트리거하는 대신 양식 제출시 트리거하십시오.

마지막으로 $.ajax call의 경우 url 속성의 경우 양식 작업 속성에서 올바른 URL을 검색하십시오.

자세한 내용은 양식 태그를 사용하여 remote: true 옵션을 추가 할 수 있습니다. 그런 다음 이벤트를 ajax:success, ajax:error 등에 바인딩하십시오.