0

最初に、私はRailsに非常に慣れていません。小さなログインアプリケーションで遊んでいて、すべてが機能していて、単純なフォームを試してみることにしました。しかし、ログインフォームをgemで機能させることができません。

これが私が持っていて働いていたものです。

<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 %>

これは、ログインしようとするまでは問題なく機能しているようです。ログインすると、常に無効なユーザー名とパスワードのメッセージが表示されます。ここでどこが間違っているのかわかりません。どんな助けでも大歓迎です!

ありがとう!

4

2 に答える 2

2

ケース1の場合、おそらくparamsを受け取っています。{ :email => '...', ....}ケース2の場合、:sessions => { :email => '...', ....}

params.inspectを確認してください

于 2013-01-07T19:24:37.853 に答える
1

とった!私を正しい方向に向けてくれたZabbaに感謝します。

私の2番目の方法は機能します。

<%= 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に感謝します!

于 2013-01-08T03:33:44.090 に答える