Rails使用JSON对象进行部分更新

时间:2016-01-15 11:49:23

标签: javascript ruby-on-rails json ajax facebook

我正在通过添加一些使用考拉宝石获取的Facebook帖子来更新部分内容。这是我写的代码。这是饲料控制器:

# feed_controller.rb

def index
end

def fb_feed
  @fb_feed = ..
  respond_to do |format|
    format.js {}
  end
end

这是索引视图:

# index.html.haml

#feed-partial

:javascript

  $(document).ready(function(){
    $.ajax({ url: "/facebook_feed",
      success: function(fb_feed){
        console.log(fb_feed);
      }});
  });

Facebook js文件:

:plain
  $("#feed-partial").append("#{escape_javascript(render :partial =>'facebook', :locals => { :fb_feed => @fb_feed })}");

路线:

get 'facebook_feed' => 'feed#facebook_feed', :defaults => { :format => 'js' }

到目前为止一切正常,但我希望在ajax成功获得JSON对象,而不是字符串。为此,我做了一些改变:

# feed_controller.rb

respond_to do |format|
  format.js { render :json => @fb_feed }
end

# index.html.haml

...
$.ajax({ url: "/facebook_feed",
  dataType: 'json',
...

现在我正在获取一个JSON对象,但是部分没有更新。 为了使JSON对象部分呈现,我缺少什么,或者我需要做什么? 谢谢!

1 个答案:

答案 0 :(得分:0)

如果要渲染部分并将其附加到页面 您应该在ajax请求上使用js格式进行响应。默认情况下呈现%action_name%.js.erb(haml等)

如果你想在javascript上使用从控制器中恢复的数据创建html,请使用 { render :json => @fb_feed }将是正确的

如果要同时使用两者,则必须使用js和json声明2种响应格式。