Это мой первый раз, когда я проверяю приложение rails. Я видел много уроков, которые казались легкими. Я не знаю, почему я не могу заставить его работать.
Ниже моя установка.
Администратор контроллера (action = login)
def login
session[:user_id] = nil
if request.post?
@user = User.authenticate(params[:userId], params[:password])
if true
session[:user_id] = @user.user_id
flash.now[:notice] = "Login Successful"
redirect_to(:controller => "pages", :action => "mainpage")
else
flash.now[:notice] = "Invalid user/password combination"
end
end
end
Таким образом, когда пользователь впервые приходит к администратору / логину, ему просто представляется форма ниже
login.erb.html
<% form_for :user do |f| %>
<p><label for="name">User ID:</label>
<%= f.text_field :userid %>
</p>
<p><label for="password">Password:</label>
<%= f.password_field :password%>
</p>
<p style="padding-left:100px">
<%= submit_tag 'Login' %>
</p>
<% end %>
Моя модель пользователя:
class User < ActiveRecord::Base
validates_presence_of :userid, :password
def self.authenticate(userid, password)
user = self.find_by_userid_and_password(userid, password)
user
end
end
Фактические имена полей для ИД пользователя и пароля в моей БД: userid
password
Я ожидаю поведения, когда пользователь ничего не вводит в поля и просто нажимает кнопку "Отправить". он скажет им, что ID пользователя и пароль являются обязательными полями. Однако этого не происходит
В консоли я вижу сообщения:
>> @user = User.new(:userid => "", :password => "dsf")
=> #<User id: nil, userid: "", password: "dsf", created_at: nil, updated_at: nil>
>> @user.save
=> false
>> @user.errors.full_messages
=> ["Userid can't be blank"]
Так что ошибка где-то в моей форме отправить ...
ОБНОВЛЕНИЕ : проверки происходят только тогда, когда вы СОХРАНИТЕ объект .... здесь я ничего не сохраняю. Так что в этом случае я должен сделать проверки JavaScript?