【问题标题】:Rails partial update using a JSON objectRails 使用 JSON 对象进行部分更新
【发布时间】:2016-01-15 11:49:23
【问题描述】:

我正在通过附加一些 Facebook 帖子来更新部分内容,这些帖子是使用 koala gem 获取的。这是我写的代码。这是饲料控制器:

# 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 对象,我缺少什么,或者我需要做什么? 谢谢!

【问题讨论】:

  • 局部不渲染?还是部分渲染但不显示来自对象的数据?
  • 你能显示浏览器控制台日志吗?我认为你错过了 facebook js 文件中 append 方法的单引号
  • Adrian Mann 只将一些纯文本放入部分中,似乎部分根本没有呈现。
  • @SergeyGorlanov 控制台实际上给了我 JSON 对象。
  • @dimmg 尝试删除{ render :json => @fb_feed } u js 部分未渲染

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


【解决方案1】:

如果您想渲染部分并将其附加到页面 您应该对 ajax 请求使用 js 格式进行响应。并且默认呈现 %action_name%.js.erb(haml etc.)

如果您想使用从控制器接收的数据在 javascript 上创建 html,请使用 { render :json => @fb_feed } 是对的

如果你想同时使用,你必须声明 js 和 json 两种响应格式。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-11-28
    • 1970-01-01
    • 1970-01-01
    • 2014-06-28
    • 1970-01-01
    • 1970-01-01
    • 2013-11-11
    相关资源
    最近更新 更多