這是我的第一個問題,我目前正在嘗試構建我的第一個Ruby on Rails應用程序,所以這個問題可能是基本的。如何根據Rails 3中的條件轉發/路由請求?
問題:
我希望根網站,其中只包含兩個領域,爲用戶模型電子郵件地址和密碼的一個形式。根據輸入的電子郵件地址是否已經存在,表單應將請求轉發給'users#create'(即創建一個新用戶)或'sessions#create'(即將用戶簽入..如果密碼是正確的)
我試了一下:
爲了解決這個我創建了被稱爲「決定」的頁面控制器新的動作,並指出表單到該頁面。
它基本上是這樣的:
def decide
if User.find_by_email(params[:email])
# Copied in all of the code from sessions#create
# with a redirect at the end so a /decide page doesn't get rendered
else
# Copied in all of the code from users#create
# with a redirect at the end so a /decide page doesn't get rendered
end
end
-
現在這個工作,我很爲自己感到驕傲,我理解了它作爲一個完整的初學者,但我能聽到有經驗的程序員在這段代碼中痛苦地哭泣。我很確定這不是「Rails方式」。
我重複了大量的代碼,我覺得我正在把東西放在控制器中,而不是爲此目的而設計的。
另一個問題是我無法讓我的rspec集成測試正常工作,基本上它轉到root_path,用新用戶填寫表單,點擊按鈕,並期待成功刷新...但測試在按下按鈕時返回一個空的html文檔。儘管當我在瀏覽器中做同樣的事情時,它工作得很好。
所以我想:
你不能不知何故把上面,如果在routes.rb中文件中的語句,並請求重定向到相應的控制器和行動?
如果是這樣怎麼樣?
還是有沒有人有不同的想法如何做到這一點?
謝謝
-Konstantin
就你的RSpec問題而言,可能值得多提一些問題,比如:你的規格,更多的代碼等等。 – 2011-06-09 07:56:50