Rails渲染在控制台中工作,但不加载页面

时间:2011-10-24 12:04:45

标签: ruby-on-rails-3 jquery-ui jquery

我的目标是从AJAX调用中呈现html。在我的AJAX调用中将dataType更改为'html'似乎在我的控制台上工作,它很高兴地宣称渲染成功:

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

1 个答案:

答案 0 :(得分:1)

通常ajax请求ha 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代码以更新页面内容,如

$("#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);
});