Rails 3 уведомления - PullRequest
       27

Rails 3 уведомления

4 голосов
/ 15 декабря 2010

Использование Rails 3.0.3 в сочетании с гемами типа devise Я не получаю никаких флеш-сообщений.Теперь я упомяну devise, потому что он управляет файлами cookie, используемыми для моей аутентификации.

Теперь приложение Rails немного особенное, поскольку оно использует поддоменов .Что они делают, так это сообщают приложению, какую компанию просматривает пользователь.Пример: mycompany.theapp.com/projects/3/ <- Проект 3 компании «mycompany». <br>Когда пользователь входит в систему, он / она направляется на theapp.com/overview <- non subdomain <br>Everyуведомление там отображается, так почему бы не на страницах поддомена?

Так вот, этот код используется на страницах поддомена.Точно так же, как можно было бы поместить его на страницах, не относящихся к домену.Код в контроллере:

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 [: note], я тоже попробовал это (потому что это работало для devise).

flash[:notice] = "Project #{@project.name} updated."
# Result: --- !map:ActionDispatch::Flash::FlashHash {} 

Теперь уведомления отправляются с помощью файлов cookie или данных сеанса, которые не 'хорошо перенесены в субдомены?Поскольку форма редактирования проекта находится на mycompany.theapp.com/projects/3/edit/
, и она отправляет меня на mycompany.theapp.com/projects/3/ (без уведомления)

Itпроисходит в Ubuntu 10.10 с «сервером rails», пассажиром, использующим nginx и даже на компьютере Mac (но кто-то другой это проверял).

Кто-нибудь хочет догадаться?

1 Ответ

6 голосов
/ 16 декабря 2010

Похоже, что-то не так с конфигурацией. Мы развернули его на сервере очень быстро, в производственном режиме, и это сработало, к нашему большому удивлению. Уведомления отображались во всех доменах.
Это что-то с доменами 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-session-to-the-rescue /

@ David Sulc, пользователи вошли в систему.

...