2011-10-24 5 views
0

목표는 AJAX 호출에서 html을 렌더링하는 것입니다.레일즈 렌더링은 콘솔에서 작동하지만 페이지를로드하지 않습니다.

Rendered admin/articles/show.html.erb within layouts/application (108.1ms) 
Completed 200 OK in 185ms (Views: 112.6ms | ActiveRecord: 2.8ms) 

하지만 페이지가 변경되지 않습니다 : 내 AJAX 호출에서 'HTML'에 대한 데이터 유형을 변경하면 내 콘솔은 행복하게 성공 렌더링 주장한다는 점에서 일 것 같았다. 여기

는 일부 코드입니다 :

보기 :

<span id='show' class="ui-icon ui-icon-extlink" article_id=<%=article.ID %> onmouseover="this.style.cursor='pointer'"></span> 

JQuery와 :

$('#show').live("click",function(evt){ 
    evt.preventDefault(); 
    var article_id=$(this).attr("article_id"); 

    $.ajax({ 
     success  : null, 
     type  : 'GET', 
     url   : '/admin/articles/show', 
     dataType : 'html', 
     data: { 
      id: article_id 
     }, 

    }); 
}); 

내 컨트롤러 :

def show 
    @article = Article.find(params[:id]) 

    respond_to do |format| 
    format.html 
    format.xml { render :xml => @article } 
    end  
end 

routes.rb

match 'articles/show' => 'articles#show', :via => :get 

나는 AJAX에서 HTML을 렌더링하고 싶다는 이상한 요청을 알고 있지만 이것이 span 태그에 포함 된 클릭 가능한 링크가 있다고 생각할 수있는 가장 쉬운 방법입니다. 이러한 변경을 JS하는 유형을 변경할 수있는 경우

, Rails 3.0.1, Ruby 1.9.2JQuery

+0

을 위해 작동 할 아무 일도 발생하지 않습니다. 아직도 페이지에 반환 된 HTML을 "넣는"자바 스크립트를 작성해야합니다. – Mischa

답변

1

일반적으로 아약스 요청 헥타르의 JS 유형을 사용하는 것입니다

컨트롤러

def show 
    @article = Article.find(params[:id]) 
    respond_to do |format| 
    format.html 
    format.js 
    format.xml { render :xml => @article } 
end  

후 작동 app/views/articles/show.js.erb에서 자바 스크립트 코드를 작성하여 페이지를 업데이트하십시오. 그냥 HTML을 반환하는 경우 NT

$("#yourDiv1").html("blah blah"); 
$("#yourDiv2").html("whatever"); 

및 다음과 같은 접근 방식과 같은 HTML과 JS

$.ajax({ 
    success  : null, 
    type  : 'GET', 
    url   : '/admin/articles/show', 
    dataType : 'html', 
    data: { 
     id: article_id 
    }, 

}).done(function(html) { 
$("#yourDIv").html(html); 
}); 
+0

위대한, 고마워. 그게 효과, 그냥 직접 HTML을 렌더링 할 수 있지만 이해가 –

관련 문제