2011-10-24 105 views
0

我的目標是從AJAX調用渲染HTML。更改數據類型來在我的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) 

但頁面沒有改變。

下面是一些代碼:

查看:

<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標記中包含可點擊鏈接的最簡單方法。

使用Rails 3.0.1Ruby 1.9.2JQuery

+0

工作,如果你只是返回HTML,沒有任何反應。您仍然必須編寫一些JavaScript,將返回的HTML「放入」頁面中。 – Mischa

回答

1

通常Ajax請求公頃JS類型,如果你可以改變類型的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中寫入javascript代碼來更新頁面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,但有道理 –

相關問題