-
10-10-2019 - |
質問
Rails 3.0.3を使用してDeviseのような宝石と組み合わせて、フラッシュメッセージが表示されません。今、私はDeviseに言及します。なぜなら、それは私を認証するために使用されるCookieを制御するからです。
Railsアプリケーションは使用しているので、少し特別になりました サブドメイン. 。彼らがしていることは、ユーザーがどの会社を閲覧しているかをアプリケーションに伝えることです。例:mycompany.theapp.com/projects/3/ < - 会社「mycompany」のプロジェクト3。
ユーザーがログインしたとき、彼/彼女はtheapp.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がフラッシュを使用しているので[:通知]私もそれを試しました(それは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では、「Rails Server」、NGINXを使用している乗客、さらにはMacマシンでも行われます(ただし、他の誰かがテストしました)。
誰かが推測するのを気にしますか?
解決
どうやら構成に何か問題がなかったようです。私たちはそれをサーバーのリアルクイック、制作モードに展開しましたが、それは私たちの驚きに大いに役立ちました。通知はすべてのドメインに現れていました。
それはローカルホストドメインを持つものであり、私はLVH.MEを使用していました、そのレールは完全に得られません。
ヒントは、Railscastの(最近の)コメントにありました。
http://railscasts.com/episodes/221-subdomains-in-rails-3?view=comments#comment_146276 LocalHostのサブドメイン間のセッションを共有したいかどうかを知る重要なことが1つあります。使用:domain => ".lvh.me"は常に動作するわけではありません(私の場合はそうではありませんでした)。 blog.plataformatec.com.br/2009/12/subdomains-and-sessions-to-the-rescue/
@David Sulc、ユーザーはログインしました。