使用Rails 3.0.3结合设计之类的宝石我没有得到任何flash消息.现在我提到设计,因为它控制用于验证我的cookie.
现在Rails应用程序有点特殊,因为它使用子域.他们所做的是告诉应用程序用户正在浏览哪家公司.例如:mycompany.theapp.com/projects/3/ < - 公司"mycompany"的项目3.
当用户登录时,他/她被定向到theapp.com/overview < - 非子域
每次通知都会显示,那么为什么不在子域页面上?
所以这是子域页面上使用的代码.与将其放在非子域页面上的完全相同.控制器中的代码:
def update
redirect_to [@project], :notice => "Project #{@project.name} updated."
end
Run Code Online (Sandbox Code Playgroud)
layouts/application.html.erb
<% flash.each do |type, message| %>
<%= content_tag :div, message, :class => "flash #{type}" %>
<% end %>
Run Code Online (Sandbox Code Playgroud)
我还添加了以下内容,试图弄清楚发生了什么:
flash.to_yaml
# Result: --- !map:ActionDispatch::Flash::FlashHash {}
Run Code Online (Sandbox Code Playgroud)
由于显然设计使用flash [:notice]我也尝试过(因为那是为了设计).
flash[:notice] = "Project #{@project.name} updated."
# Result: --- !map:ActionDispatch::Flash::FlashHash {}
Run Code Online (Sandbox Code Playgroud)
现在,通知是否会通过cookie或会话数据发送,而这些数据不能很好地传输到子域?因为该项目的编辑形式在mycompany.theapp.com/projects/3/edit/上
,它将我发送到mycompany.theapp.com/projects/3/(不另行通知)
它发生在带有"rails服务器"的Ubuntu 10.10上,乘客使用nginx,甚至在Mac机器上(但有人测试过).
有人在乎猜?