【问题标题】:Facebook Open Graph Action + Rails: return JSON or HTMLFacebook Open Graph Action + Rails:返回 JSON 或 HTML
【发布时间】:2012-08-23 15:03:39
【问题描述】:

我已经按照 Ryan Bates 的精彩教程实现了 Facebook 的 Open Graph:http://railscasts.com/episodes/363-facebook-open-graph

但是,当 Facebook 抓取我的网站以检索 og 参数时,它看起来像是在要求 JSON 格式。这是一个问题,因为我已经使用 JSON 来返回数据用于其他目的。我可以通过 format.html 返回 Facebook 的数据。我检查了请求对象,我看到了这个 ACCEPT 标头:

'HTTP_ACCEPT' */*

但是,这导致我的应用程序执行format.json。我玩弄了格式响应的顺序,它仍然请求format.json

respond_with(@project) do |format|
    format.html { render 'show'}
    format.json { render 'show'}
    format.js { render 'show'}
end

有什么想法吗?

【问题讨论】:

    标签: facebook ruby-on-rails-3


    【解决方案1】:

    经过大量试验和错误,我发现接受标头为*/*,如果您使用的是respond_with,则需要确保控制器顶部的respond_to符合您想要的顺序...在我的情况下,这是正确的:

    class ProjectsController < ApplicationController
      respond_to :html
      respond_to :json
      respond_to :js,
      ...
    

    这不是

    class ProjectsController < ApplicationController
      respond_to :json
      respond_to :html
      respond_to :js,
      ...
    

    【讨论】:

    • 太棒了!这让我有些头疼。
    【解决方案2】:

    非常感谢!

    注意,您可能还需要更改顺序:

    
    respond_to do |format|
      format.json { render :json => @this.to_json }
      format.html
    end
    

    到:

    
    respond_to do |format|
      format.html
      format.json { render :json => @this.to_json }
    end
    

    正如facebook open graph crawler triggering json response in rails actions中所说的

    【讨论】:

      猜你喜欢
      • 2014-01-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-06
      • 1970-01-01
      • 1970-01-01
      • 2012-08-28
      相关资源
      最近更新 更多