我正在开发一个Facebook应用程序,所以我不能靠饼干由于P3P(隐私首选项项目)和是的,这是一个该死的疼痛(见幻灯片18日和19日这SlideShare上关于Rails和Facebook应用程序为它的照片) ...
在Facebook的应用程序每一个cookie的,从浏览器的角度来看,是一个第三方的Cookie。 和许多浏览器在默认情况下阻止他们。
所以我的问题是: 我如何能实现闪消息,而无需依靠饼干?
更新:
我修改session_store.rb
和DB相应。 现在,会话存储在数据库,但闪光灯消息仍然依靠饼干...任何想法吗?
更新#2:
我终于找到了一个解决方法,请参阅我的回答如下。 做最好的办法是阿贾克斯的一切 (根据上述联SlideShare上),但作为一个快速解决我的解决办法应该工作。
我终于找到了解决办法实现我自己的(简单)的提示信息并使它们通过该PARAMS从一个请求到另一个。
首先,我重写default_url_options
在application_controller.rb
追加到每一个请求:my_flash PARAM:
def default_url_options
{ :my_flash => @my_flash }
end
然后,总是在application_controller.rb
,我写了一个my_flash_from_params
的before_filter设置@my_flash
变量:
def my_flash_from_params
@my_flash = params[:fb_flash]
end
最后,我作出了下列_my_flash.html.erb
在部分application.html.erb
<div class="my_flash">
<%= my_flash %>
</div>
呼叫:
<%= render :partial => "layouts/my_flash", :locals => {:my_flash => @my_flash} if @my_flash %>
如果你想尝试这种解决方案也看到这个答案约default_url_options改写 。
闪存的消息都建在会议上。 所以,你仍然可以依靠闪光灯,如果你改变会话存储使用的数据库。 这可以通过编辑可以轻松完成config/initializers/session_store.rb
并按照对文件中的指令。
下面是关于该主题的更多信息: 动作控制器概述- >会议