Rails 3.0.3 を devise などの gem と組み合わせて使用すると、フラッシュ メッセージが表示されません。これは、認証に使用される Cookie を制御するためです。
サブドメインを使用しているため、Rails アプリケーションは少し特殊です。彼らがすることは、ユーザーが閲覧している会社をアプリケーションに伝えることです。例: mycompany.theapp.com/projects/3/ <- 会社「mycompany」のプロジェクト 3。
ユーザーがログインすると、theapp.com/overview <- 非サブドメイン
そこにあるすべての通知が表示されるのに、なぜサブドメイン ページに表示されないのでしょうか?
したがって、これはサブドメイン ページで使用されるコードです。サブドメイン以外のページに配置する場合とまったく同じです。コントローラーのコード:
def update
redirect_to [@project], :notice => "Project #{@project.name} updated."
end
layouts/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/ に送信されます (通知なし)
「レールサーバー」を備えたUbuntu 10.10、nginxを使用したパッセンジャー、さらにはMacマシンでも発生します(ただし、他の誰かがテストしました)。
誰でも推測できますか?