4

将 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 机器上(但其他人对此进行了测试)。

有人愿意猜吗?

4

1 回答 1

6

显然配置并没有真正的问题。我们将它部署在一个真正快速的生产模式的服务器上,它的工作让我们感到非常惊讶。通知出现在所有域中。
这是与 localhost 域有关的东西,我使用的是 lvh.me,Rails 并没有完全理解。

提示是在(最近)对 railscast 的评论中:

http://railscasts.com/episodes/221-subdomains-in-rails-3?view=comments#comment_146276 如果您想在 localhost 上的子域之间共享会话,有一件重要的事情要知道。使用 :domain => ".lvh.me" 并不总是有效(在我的情况下它没有),因此您必须按照blog.plataformatec.com.br/2009/12/subdomains-and-中的描述配置您的环境救援会议/

@David Sulc,用户已登录。

于 2010-12-15T22:13:21.507 回答