2013-02-20 4 views
6

게시 # 새 작업에 대한 양식을 자동 저장하려고합니다. 매분마다 POST로 자동 저장을하고 싶습니다. 그런 다음 first_or_create를 확인하고 게시 테이블에 레코드를 저장/업데이트합니다. 내 문제는, 더 이상 양식에서 POST 매개 변수에 액세스 할 수 있습니다. 그래서 같은 그것을 할 노력하고 있어요 : 행동과 : 컨트롤러AJAX로 레일스에서 ​​양식 자동 저장

post 'posts/autosave', as: :autosave_post_path 

문제는이 서버 로그가있는 params만을 포함하는 등의 해시를 보여줍니다

$(function() { 
    if ($("#new_post").length > 0) { 
    setTimeout(autoSavePost, 60000); 
    }  
}); 

function autoSavePost() { 
    $.ajax({ 
    type: "POST", 
    url: "/posts/autosave", 
    dataType: "script", 
    success: function(data) { 
     console.log(data); 
    } 
    }); 
    setTimeout(autoSavePost, 60000); 
} 

나는이 경로가 있습니다. POST 데이터의 일부로 전송 된 것과 동일한 액세스 권한을 얻으려면 어떻게해야합니까?

답변

12

당신은 serialize 방법을 통해,뿐만 아니라 data PARAM을 전달해야

$.ajax({ 
    type: "POST", 
    url: "/posts/autosave", 
    data: $("#new_post").serialize(), 
    dataType: "script", 
    success: function(data) { 
    console.log(data); 
    } 
}); 
+0

당신은 사람이다! 정말 고마워. 내가 연결 한 문서를 살펴 보았습니다. 정확히 무엇을하고 있는지 명확하지 않습니다. 요약하면 더 깊이 이해할 수있는 기회가 있습니까? 다시 한번 감사드립니다. – mackshkatz

+2

".serialize() 메소드는 표준 URL 인코딩 표기법으로 텍스트 문자열을 생성합니다."즉, 양식 내용을'param1 = value1 & param2 = value2 & ... & paramN = valueN'으로 직렬화하면, 레일스는이를 직렬화하여 객체로 다시 직렬화합니다 . – moonwave99

+1

@mackshkatz serialize는 폼의 모든 양식 요소에 대해 루핑으로 생각하고 하나의 긴 문자열로 제출할 데이터를 수집하는 것으로 생각할 수 있습니다. 이것은 POST 요청에서 레일즈 컨트롤러로 전송됩니다. GET 요청 인 경우 양식 필드에 입력 된 값을 기반으로 쿼리 문자열을 생성하는 것과 동일합니다. – ChrisC

1

serialize() 함수를 살펴보십시오. http://api.jquery.com/serialize/ :이 함수를 사용하여 컨트롤러에 매개 변수로 전달할 데이터 배열을 만들 수 있습니다.