2014-11-18 4 views
1

Я хочу добавить сообщение, когда пользователь пытается войти в систему, и он не подтвержден, я хочу отобразить это сообщение в разделе уведомлений, в основном, разработчик должен предоставить нам это сообщение, но я не вижу никаких сообщение в этом случае. Поэтому я решил добавить его вручную из сеансов контроллера здесь мой код:devise overriding sessions controller

class SessionsController < Devise::SessionsController 

    def new 
    super 
    end 

    def create 
    user = User.find_by_email(params[:user][:email]) 

    self.resource = warden.authenticate!(auth_options) 
    set_flash_message(:notice, :signed_in) if is_flashing_format? 
    sign_in(resource_name, resource) 

    if user.confirmed_at.nil? 
     flash[:notice] = "my message here" 
    end 
    yield resource if block_given? 

    respond_with resource, location: after_sign_in_path_for(resource) 
    end 

end 

проблема вспышки [: извещение] пуст после выполнения действия, в консоли у меня есть

Started POST "https://stackoverflow.com/users/sign_in" for 127.0.0.1 at 2014-11-18 15:07:21 +0200 
Processing by SessionsController#create as HTML 
    Parameters: {"utf8"=>"✓", "authenticity_token"=>"xC86tz4kZjcSMqXOL/+qpwlh5VlSbnsvLj93N5jb3NI=", "user"=>{"email"=>"[email protected]", "password"=>"[FILTERED]"}, "commit"=>"Sign in"} 
    (0.2ms) SELECT COUNT(*) FROM "landing_page_reports" 
    LandingPageReport Load (0.2ms) SELECT "landing_page_reports".* FROM "landing_page_reports" ORDER BY "landing_page_reports"."id" DESC LIMIT 1 
    User Load (0.4ms) SELECT "users".* FROM "users" WHERE "users"."email" = '[email protected]' LIMIT 1 
    CACHE (0.0ms) SELECT "users".* FROM "users" WHERE "users"."email" = '[email protected]' LIMIT 1 
    (0.1ms) begin transaction 
    (0.2ms) commit transaction 
Completed 401 Unauthorized in 193ms 

как можно Я показываю это сообщение?

ответ

0

Более простой способ сделать то, о чем спрашивают, это добавить before_filter: confirm_notice в ваш application_controller и проверить, является ли current_user.confirmed? или нет.

экс ::

before_filter :confirmation_notice 

def confirmation_notice 
    flash[:notice] = "my message here" unless current_user.confirmed? 
end 

Не забудьте настроить свои взгляды, чтобы показать эту вспышку уведомление.

This, чтобы узнать, как настроить свои представления.

+0

flash по-прежнему пуст на странице – maki

+0

Добавили ли вы петлю на флешку в своем представлении, как предоставленная ссылка? –

+0

мои флеш-объекты похожи на то, что # , @ closed = false, @flashes = {: alert => "Вы должны подтвердить ваш аккаунт перед продолжением. "}, @ now = nil> – maki