I18n-Flash-Messages-with-Devise-and-Bootstrap
的routes.rb
root :to => 'users#index'
devise_for :users, :controllers => {:registrations => "registrations", :sessions => "sessions"}
devise_for :users do
get '/users/sign_in', :to => 'devise/sessions#new', :as => :new_user_session
get '/users/sign_out', :to => 'devise/sessions#destroy', :as => :destroy_user_session
get "/users/sign_up", :to => "registrations#new"
end
当我尝试访问localhost:3000
时,我会转到localhost:3000/users/sign_in
这是正常的,因为filter
,但是我会收到验证消息
您需要先登录或注册才能继续
如何避免这种情况?
我尝试在没有帮助的路线中使用match
进行更改。
修改 考虑一个场景: (没有用户会话)如果我尝试访问/角色将被重定向到登录路径,那时我将需要msg。或者我会放弃其他闪存验证,例如注销,电子邮件存在,错误。
答案 0 :(得分:3)
告诉应用程序使用root作为会话#new如果用户未登录
配置/ routes.rb中
authenticated :user do
root :to => "users#index"
end
unauthenticated :user do
devise_scope :user do
get "/" => "devise/sessions#new"
end
end
答案 1 :(得分:0)
最简单的方法是将空字符串传递给config文件夹中的devise.en.yml文件。步骤如下:
在devise.en.yml文件配置中将空字符串传递为:
en:
devise:
failure:
unauthenticated: ''
<% flash.each do |key, value| %>
<%= content_tag :div, value, :class => "flash #{key}" unless value.blank? %>
<% end %>