Ruby on rails 如何在Rails上实现无cookieless flash消息?

Ruby on rails 如何在Rails上实现无cookieless flash消息?,ruby-on-rails,facebook,ruby-on-rails-3,cookieless,Ruby On Rails,Facebook,Ruby On Rails 3,Cookieless,我正在开发一个facebook应用程序,所以我不能依赖cookies,因为P3P(隐私偏好项目)是的,这是一个该死的痛苦(见图片) 在facebook应用程序中,从浏览器的角度来看,每个cookie都是第三方cookie。默认情况下,许多浏览器都会阻止它们 所以我的问题是:如何在不依赖cookie的情况下实现flash消息 更新: 我修改了session\u store.rb并相应地修改了数据库。现在会话存储在DB上,但是flash消息仍然依赖cookies。。。有什么想法吗 更新#2: 我终于

我正在开发一个facebook应用程序,所以我不能依赖cookies,因为P3P(隐私偏好项目)是的,这是一个该死的痛苦(见图片)

在facebook应用程序中,从浏览器的角度来看,每个cookie都是第三方cookie。默认情况下,许多浏览器都会阻止它们

所以我的问题是:如何在不依赖cookie的情况下实现flash消息

更新:

我修改了session\u store.rb并相应地修改了数据库。现在会话存储在DB上,但是flash消息仍然依赖cookies。。。有什么想法吗

更新#2:


我终于找到了解决办法,请参见下面的答案。最好的办法是使用ajax(根据上面链接的幻灯片),但作为一个快速修复方案,我的解决方案应该可以工作。

Flash消息构建在会话之上。因此,如果将会话存储更改为使用数据库,您仍然可以依赖flash。这可以通过编辑
config/initializers/session_store.rb
并遵循该文件上的说明轻松完成


以下是关于该主题的更多信息:

我终于找到了一个解决办法实现我自己的(简单的)flash消息,并通过参数将它们从一个请求传递到另一个请求

首先,我覆盖了
application\u controller.rb中的
default\u url\u选项
,将a:my\u flash参数附加到每个请求中:

def default_url_options 
  { :my_flash => @my_flash }
end    
然后,始终在
application\u controller.rb
中,我在\u过滤器之前从\u params
编写了一个
my\u flash\u,以设置
@my\u flash
变量:

def my_flash_from_params
  @my_flash = params[:fb_flash]
end 
最后,我在
application.html.erb

<div class="my_flash">
  <%= my_flash %>
</div>  

电话:

 <%= render :partial => "layouts/my_flash", :locals => {:my_flash => @my_flash} if @my_flash %>
“布局/my\u flash”,:locals=>{:my\u flash=>@my\u flash}如果@my\u flash%>

如果您想尝试此解决方案,请参阅。

我按照说明进行了操作,现在会话存储在数据库中,但闪存消息仍然依赖cookies!这太奇怪了。。。有什么想法吗?根据文档“所有会话存储都使用cookie来存储每个会话的唯一ID(您必须使用cookie,Rails不允许您在URL中传递会话ID,因为这样不太安全)。”。抱歉:(此外,在DB中处理会话对多dynos应用程序不起作用……在没有cookie的情况下处理会话真是一件痛苦的事。无论如何,谢谢你。