2013-01-07 134 views
0

首先我對rails非常陌生 - 我在玩一個小小的登錄應用程序,讓它工作並決定嘗試簡單的表單 - 但是無法獲取我的日誌與寶石一起工作。simple_form登錄問題

這是我的工作,

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

這似乎是工作好,直到我嘗試登錄 - 當我登錄它總是顯示我的無效的用戶名和密碼信息 - 我想不通我要去哪裏錯在這裏。任何幫助將非常感激!

謝謝!

回答

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!

2

在案例1中,你可能收到PARAMS:{ :email => '...', ....},並在情況2,:sessions => { :email => '...', ....}

檢查params.inspect

+0

我把它作爲<%= simple_form_for sessions_path,:html => {:class =>'form-vertical'} do | f | %> ---但得到了錯誤路由錯誤 沒有路由匹配[郵政]「/登錄」 - 任何建議? – Jamie

+0

得到它的工作!感謝您的正確方向@Zabba - 如果有興趣的人,我會在8小時內發佈答案,當它允許我! :) – Jamie