根据FB SDK,我必须包含一个带有相应标题的频道文件。
作为一个主要的NOOB和Rails而不是PHP开发人员我不知道如何做到这一点。
以下是他们为php提供的示例:
<?php
$cache_expire = 60*60*24*365;
header("Pragma: public");
header("Cache-Control: max-age=".$cache_expire);
header('Expires: ' . gmdate('D, d M Y H:i:s', time()+$cache_expire) . ' GMT');
?>
<script src="//connect.facebook.net/en_US/all.js"></script>
我想知道如何在Rails 3中做同样的事情
答案 0 :(得分:16)
我厌倦了在每个facebook连接的应用程序中污染我的routes.rb
文件,所以我包装了一个机架处理程序,在Rails引擎中提供了正确的channel.html响应并将其作为gem发布。您只需添加“fb-channel-file&#39;您的Gemfile中的gem,它将自动挂载在/channel.html
https://github.com/peterlind/fb-channel-file
答案 1 :(得分:8)
在你的控制器内:
cache_expire = 1.year
response.headers["Pragma"] = "public"
response.headers["Cache-Control"] = "max-age=#{cache_expire.to_i}"
response.headers["Expires"] = (Time.now + cache_expire).strftime("%d %m %Y %H:%I:%S %Z")
render :layout => false, :inline => "<script src='//connect.facebook.net/en_US/all.js'></script>"
答案 2 :(得分:3)
在控制器中使用response.headers
哈希值。 Docs
示例中的示例
cache_expire = 60*60*24*365
response.headers["Pragma"] = "public"
response.headers["Cache-Control"] = "max-age=#{cache_expire}"
response.headers["Expires"] = ... # I'll leave this one to you.
# (Or ask another Q.)
# gmdate('D, d M Y H:i:s', time()+$cache_expire) . ' GMT');
答案 3 :(得分:1)
我只是将'channel.html'添加到我的公共目录并在其中插入了这一行:
<script src="//connect.facebook.net/en_US/all.js"></script>