首先我对rails非常陌生 - 我正在玩一个小的登录应用程序,如果它全部工作并决定尝试简单的表单 - 但是我无法使用我的登录表单来处理宝石。
这是我拥有和工作的内容;
<h2>Log In</h2>
<%= form_tag sessions_path do %>
<div class="field">
<%= label_tag :email %>
<%= text_field_tag :email, params[:email] %>
</div>
<div class="field">
<%= label_tag :password %>
<%= password_field_tag :password %>
</div>
<p><%= link_to "Forgotten Password?", new_password_reset_path %></p>
<div class="field">
<%= check_box_tag :remember_me, 1, params[:remember_me] %>
<%= label_tag :remember_me %>
</div>
<div class="actions"><%= submit_tag "Log In" %></div>
<% end %>
以下是我尝试将其更改为使用简单形式的内容。
<h2>Log In</h2>
<%= simple_form_for :sessions, :url => sessions_path, :html => { :class => 'form-vertical' } do |f| %>
<%= f.input :email, :required =>false, :label => 'Email Address',:placeholder => 'Email Address' %>
<%= f.input :password, :required =>false, :label => 'Password',:placeholder => 'Password' %>
<label class="checkbox">
<%= check_box_tag :remember_me, 1, params[:remember_me] %>
Remember me
</label>
<p>
<%= link_to "Forgotten Password?", new_password_reset_path %>
</p>
<%= f.button :submit "Login" %>
<% end %>
这似乎工作正常,直到我尝试登录 - 当我登录时总是显示我的无效用户名和密码消息 - 我无法弄清楚我在哪里出错了。任何帮助将不胜感激!
谢谢!
答案 0 :(得分:2)
在案例1中,您可能正在接收参数:{ :email => '...', ....}
而在案例2中,:sessions => { :email => '...', ....}
检查params.inspect
答案 1 :(得分:1)
知道了!非常感谢Zabba指出我正确的方向;
我的第二种方法有效;
<%= simple_form_for :sessions, :url => sessions_path, :html => { :class => 'form-vertical' } do |f| %>
<%= f.input :email, :required =>false, :label => 'Email Address',:placeholder => 'Email Address' %>
<%= f.input :password, :required =>false, :label => 'Password',:placeholder => 'Password' %>
<label class="checkbox">
<%= check_box_tag :remember_me, 1, params[:remember_me] %>
Remember me
</label>
<p>
<%= link_to "Forgotten Password?", new_password_reset_path %>
</p>
<%= f.button :submit "Login" %>
<% end %>
但是我无法更新我的控制器,所以我在哪里;
def create
user = User.find_by_email(params[:email])
if user && user.authenticate(params[:password])
...
end
我必须更新到;
def create
user = User.find_by_email(params[:sessions][:email])
if user && user.authenticate(params[:sessions][:password])
...
end
谢谢Zabba!