试图用jquery ajax和rails format.js渲染部分问题

时间:2014-05-07 03:42:19

标签: jquery ajax ruby-on-rails-3 partial

我希望我的rails 3.x控制器在被ajax调用时呈现部分而不是完整视图。我见过像

这样的例子
def show
    @rec = Rec.find(params[:id])
    respond_to do |format|
        format.html 
        format.js { render partial: @rec } # for ajax response
    end
end

但是对于rails来回应部分我必须将.js附加到我的网址或设置dataType:'脚本'在我的ajax电话中。我试过了

$.get("/recs/1.js")
    .done(function(data) {
        $('#right_pane').html(data);
    })

$.ajax({
    url: "/recs/1", 
    dataType: "script"
}).done(function(response) {
    $('#feed_right').html(response);
})

但是,如果我执行其中任何一项操作,我会从jquery获取parserror或syntaxerror,这是可以理解的,因为我返回的是HTML而不是javascript。

关于如何巧妙地做到这一点的想法,而不诉诸js.erb?

1 个答案:

答案 0 :(得分:0)

我将.js附加到url然后将dataType设置为html,就像这样。

$.ajax({
    url: "/recs/1.js", 
    dataType: "html"
}).done(function(response) {
    $('#feed_right').html(response);
})

我想是有道理的。