2014-06-06 27 views
3

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 "https://stackoverflow.com/users/sign_up", :to => "registrations#new" 
    end 

當我嘗試訪問localhost:3000,我將指向localhost:3000/users/sign_in那是正常的,因爲filter,但不過我會得到驗證郵件

您需要先登錄或註冊繼續之前

如何避免這種情況?

我嘗試通過在沒有幫助的路由中使用match進行更改。

編輯: 考慮這樣一個場景: (無需用戶會話),如果我試圖訪問/角色將被重定向路徑籤,在這一點上我需要味精。或者我會放棄其他閃存驗證,如註銷,電子郵件存在,密碼錯誤。

回答

3

告訴應用程序使用root作爲會話#新如果未登陸

配置用戶/ routes.rb中

authenticated :user do 
    root :to => "users#index" 
    end 
    unauthenticated :user do 
    devise_scope :user do 
     get "/" => "devise/sessions#new" 
    end 
    end 
0

好最容易做,這是一個空字符串傳遞給devise.en.yml文件中配置folder.Steps如下:

  1. 傳遞一個空字符串在devise.en。 YML文件配置爲:

    en: devise: failure: unauthenticated: ''

  2. 那麼你的佈局中顯示的提示信息只有當閃光燈哈希值不爲空值: <% flash.each do |key, value| %> <%= content_tag :div, value, :class => "flash #{key}" unless value.blank? %> <% end %>
+0

我需要爲其他URL的前登錄該驗證味精。 – Nithin

+0

您需要檢查request.path是否等於路徑'/ users/sign_in'中的設計符號,那麼我們不會顯示Flash消息,否則將顯示所有其他URL' '<%flash。每個|鍵,值| %> <%= content_tag:div,value,:class =>「flash#{key}」unless request.path =='/ users/sign_in%> <% end %>' –