我正在通过添加一些使用考拉宝石获取的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对象部分呈现,我缺少什么,或者我需要做什么? 谢谢!
答案 0 :(得分:0)
如果要渲染部分并将其附加到页面 您应该在ajax请求上使用js格式进行响应。默认情况下呈现%action_name%.js.erb(haml等)
如果你想在javascript上使用从控制器中恢复的数据创建html,请使用
{ render :json => @fb_feed }
将是正确的
如果要同时使用两者,则必须使用js和json声明2种响应格式。