将 Rails 3.0.3 与 devise 之类的 gem 结合使用,我没有收到任何闪烁消息。现在我提到设计,因为它控制着用于对我进行身份验证的 cookie。
现在 Rails 应用程序有点特别,因为它使用了sub-domains。他们所做的是告诉应用程序用户正在浏览哪家公司。一个例子:mycompany.theapp.com/projects/3/ <- 公司“mycompany”的项目 3。
当用户登录时,他/她会被定向到 app.com/overview <- non subdomain
那里的每个通知都会显示,那么为什么不在子域页面上呢?
所以这是子域页面上使用的代码。与将其放在非子域页面上完全相同。控制器中的代码:
def update
redirect_to [@project], :notice => "Project #{@project.name} updated."
end
布局/application.html.erb
<% flash.each do |type, message| %>
<%= content_tag :div, message, :class => "flash #{type}" %>
<% end %>
我还添加了以下内容,试图弄清楚发生了什么:
flash.to_yaml
# Result: --- !map:ActionDispatch::Flash::FlashHash {}
由于显然设计使用 flash[:notice] 我也尝试过(因为这对设计有效)。
flash[:notice] = "Project #{@project.name} updated."
# Result: --- !map:ActionDispatch::Flash::FlashHash {}
现在通知是通过 cookie 或会话数据发送的,这些数据没有很好地传输到子域吗?因为项目的编辑表格在 mycompany.theapp.com/projects/3/edit/
并且它把我发送到 mycompany.theapp.com/projects/3/ (没有通知)
它发生在带有“rails 服务器”的 Ubuntu 10.10、使用 nginx 的乘客甚至 Mac 机器上(但其他人对此进行了测试)。
有人愿意猜吗?