【问题标题】:Rails 3 noticesRails 3 通知
【发布时间】:2011-05-26 02:08:33
【问题描述】:

将 Rails 3.0.3 与 devise 之类的 gem 结合使用时,我没有收到任何 Flash 消息。 现在我提到设计,因为它控制着用于对我进行身份验证的 cookie。

现在 Rails 应用程序有点特别,因为它使用 子域。他们所做的是告诉应用程序用户正在浏览哪家公司。一个例子:mycompany.theapp.com/projects/3/ 当用户登录时,他/她会被定向到 app.com/overview 那里的每个通知都会显示,那么为什么不在子域页面上呢?

所以这是子域页面上使用的代码。与将其放在非子域页面上完全相同。 控制器中的代码:

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 {} 

因为显然 devise 使用 flash[:notice] 我也尝试过(因为这对 devise 有效)。

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

有人愿意猜吗?

【问题讨论】:

  • 您确定当用户转移到子域时他们仍处于登录状态?这不是默认行为(您必须明确允许 cookie 跨子域)。也许用户没有登录并且正在为布局中没有闪烁的视图提供服务?

标签: ruby-on-rails devise subdomain rails-flash


【解决方案1】:

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

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

http://railscasts.com/episodes/221-subdomains-in-rails-3?view=comments#comment_146276 有一件重要的事情要知道 你想在之间共享会话 本地主机上的子域。使用:域 => ".lvh.me" 并不总是有效(在我的情况下它没有),所以你必须 将您的环境配置为 blog.plataformatec.com.br/2009/12/subdomains-and-sessions-to-the-rescue/

中描述

@David Sulc,用户已登录。

【讨论】:

  • +1。感谢您链接评论。正是我想要的。
  • 我遇到了类似的问题,但这是一个 css 问题,我没有 flash 消息、flash 错误和表单错误 css 代码。但那是一年前的事了
猜你喜欢
  • 1970-01-01
  • 2012-04-15
  • 1970-01-01
  • 2011-08-16
  • 1970-01-01
  • 2011-10-01
  • 1970-01-01
  • 2011-09-16
  • 1970-01-01
相关资源
最近更新 更多