1

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

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

有任何想法吗?

4

2 回答 2

4

经过大量试验和错误后,我发现使用 Accept Header */*,如果您使用的是 ,则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,
  ...
于 2012-08-23T20:31:53.647 回答
0

非常感谢!

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


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 打开图形爬虫中所说的那样,在 Rails 操作中触发 json 响应

于 2014-08-25T18:57:26.057 回答