2012-05-10 3 views
4

나는 계속해서 검색을 해왔고 이것이 작동하지 않는 이유를 알 수 없습니다.Rails 3.2.x remote => true가 여전히 페이지를 다시 불러옵니다.

저는 아주 기본적인 아약스 액션을 테스트하려고합니다. 여기에 내 코드입니다 :

컨트롤러 :

def commit 
    respond_to do |format| 
     format.html { redirect_to :action => "index" } # see note 1 
     format.js { render :layout => false } # see note 2 
     format.js { render :nothing => true } 
    end 
end 

보기 :

<%= link_to "commit", :action => "commit", :remote => true %> 
<%= form_tag(:action => "commit", :remote => true, :method => :post) do %> 
    <%= submit_tag "commit" %> 
<% end %> 

<div id='message'></div> 

commit.js.erb 문제는 내가 커밋 방법에 얻을 것입니다

console.log('committed'); 
$('#message').html("committed"); 

, 페이지가 다시로드되어 원격 => true의 포인트를 무효화합니다. 또한 commit.js는 ca를 얻지 못했습니다. lled.

참고 1 :이 줄을 제외하면 빈 페이지가/commit됩니다. 포함이 페이지는 단지
주 2를 다시로드합니다 : 나는 다른 제안이 방법을 모두 시도했다가 SO 게시물
주 3 : 둘 다 사용 LINK_TO을 시도하고

누군가가 도와 드릴 때 form_tag거야? 감사!

답변

4

왜 2 줄을 넣었습니까?

format.js { render :layout => false } # see note 2 
    format.js { render :nothing => true } 

두 번째 것을 제거하십시오!

교체 :

<%= link_to "commit", :action => "commit", :remote => true %> 

로 : 형태와 같은

<%= link_to "commit", commit_path, :remote => true %> 


:

<%= form_tag(:action => "commit", :remote => true, :method => :post) do %> 

등 :

당신의 확인 :

<%= form_tag(commit_path, :remote => true) do %> 

참고 : POST 기본 동작, 당신은 form_tag에서 그것을 생략 할 수 있습니다.

+0

나는 본다! format.js 인수가 작동하는 것으로 밝혀졌지만, 대신 action : 대신에 패스를 전달하면됩니다. 감사! – Jason

+0

이렇게 보자.': action'은 경로를 정의하고,': remote'는 처리 방법을 정의한다. 그것들을 조합하는 것은 이상합니다. 'remote :'가'params'에 전달되기를 원한다면? 그것은 엉망이 될 것입니다! – jdoe

관련 문제