Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Ruby On Rails > Проблема с отображением flash, с залогиванием юзер


Автор: NeLd 6.8.2007, 16:27
Проблема с отображением flash, с залогиванием юзеров.

Вот код(все скопипастено из книжки agile webdev):

Код

class LoginController < ApplicationController
  def add_user
    @user = User.new(params[:user])
    if request.post? and @user.save
      flash.now[:notice] = "User #{@user.name} created"
      @user = User.new
    end
  end

  def login
    session[:user_id] = nil
    if request.post?
        user = User.authenticate(params[:name], params[:password])
        if user
            session[:user_id] = user.id
            redirect_to(:action => "index")
        else
            flash[:notice] = "Invalid user/password combination"
        end
    end
  end
 

Ошибка "Invalid user/password combination" почему-то отображается на странице админки, которая была создана с помошью scaffold:

Код

class AdminController < ApplicationController
     scaffold :user
end


Сообщение об успешном создании юзера не отображается ни где(однако я в админке вижу, что юзверь был успешно создан), а залогиниться вообще не получается. Подскажите в чем дело, пожалуйста.
Вот код странички с логином, на всякий случай:

Код
    
<h1>Login#login</h1>
<div class="depot-form">
<%= error_messages_for 'user' %>
<fieldset>
<legend>Login</legend>
<% form_for :user do |form| %>
<p>
<label for="name">Name:</label>
<%= form.text_field :name, :size => 40 %>
</p>
<p>
<label for="password">Password:</label>
<%= form.password_field :password, :size => 40 %>
</p>
<%= submit_tag "Let me in!", :class => "submit" %>
<% end %>
</fieldset>
</div>
<p>Find me in app/views/login/login.rhtml</p>

Кусок класса Юзверь:
Код

class User < ActiveRecord::Base
    validates_presence_of :name
    validates_uniqueness_of :name
    attr_accessor :password_confirmation
    validates_confirmation_of :password
    def validate
        errors.add_to_base("Missing password") if hashed_password.blank?
    end
    def self.authenticate(name, password)
        user = self.find_by_name(name)
        if user
            expected_password = encrypted_password(password, user.salt)
            if user.hashed_password != expected_password
                user = nil
            end
        end
        user
    end

p.s. Все нашел ошибку. надо же сначала куда то запостить =)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)