2013-04-23 32 views
0

我們爲我們的Ruby on Rails項目實現了一個簡單的登錄方法,我們在頁面上提供了一個按鈕,用於提交用戶將要輸入的登錄信息,而不是指向我們登錄方法,提交按鈕運行我們的創建方法並嘗試創建另一個用戶。提交按鈕運行創建方法,而不是登錄

def login 
    username = params[:username] 
    password = params[:password] 
    if(username == NIL || password == NIL) 
    loginfailed 
    else 
    comparisonUser = User.where("username = ?", username) 
    if(comparisonUser == NIL) 
     loginfailed 
    else 
     comparisonPassword = comparisonUser.password 
     if(comparisonPassword == password) 
     flash[:notice] = "Login Successful" 
     @user = comparisonUser 
     else 
     loginfailed 
     end 
    end 
    end 
end 

下面是創建方法:

def create 
    @user = User.create!(params[:user]) 
    flash[:notice] = "User, #{@user.username} was successfully created." 
    redirect_to questions_path 
end 

,並在網頁上的登錄按鈕的代碼:

  = form_tag users_path do 
       = label :userlogin, :username, 'Username' 
       = text_field :userlogin, :username 
       %br/ 
       = label :userlogin, :password, 'Password' 
       = text_field :userlogin, :password 
       %br/ 
       = submit_tag 'Login', :id => 'Login' 

我可能需要一些更多的信息添加到submit_tag ,但我不知道該怎麼做。

感謝您的幫助!

回答

1

您正在發佈到users_path,這通常是創建操作(除非您修改了路由)。

而不是form_tag users_path您需要引用適當的路線。

+0

我該如何添加直接指向登錄方法的路線?我對Ruby非常新,所以如果這是一個愚蠢的問題,很抱歉。 – Blackdragon1400 2013-04-23 02:50:51

+1

完整的指南在http://guides.rubyonrails.org/routing.html,但你可能想要類似於: 'match「/ login」=>「users#login」,:as =>'login' ' 然後你可以參考'login_path' – GeekOnCoffee 2013-04-23 02:52:58

+0

感謝您的好解釋,我會給它一個鏡頭。 – Blackdragon1400 2013-04-23 02:58:14

相關問題