2011-10-24 14 views
0

私の目標は、AJAX呼び出しからHTMLをレンダリングすることです。Railsレンダリングはコンソールで動作しますが、ページはロードされません

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をレンダリングしたいという奇妙な要求があることは知っていますが、スパンタグにクリック可能なリンクが含まれていると考えることができる最も簡単な方法です。これらの変更をJSするタイプを変更することができれば、通常のAjaxリクエストヘクタールJSタイプRails 3.0.1Ruby 1.9.2JQuery

+0

のために動作しますが、何も起こりません。返されたHTMLをページに「置く」JavaScriptを書く必要があります。 – Mischa

答えて

1

を使用して

はその後

コントローラ

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のページを更新するjavascriptコードを書くあなただけの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をレンダリングすることができたが、意味がある –

関連する問題