2012-12-12 84 views
1

我與投給超級簡單的身份驗證 http://railscasts.com/episodes/21-super-simple-authentication 我使用的是軌道3,所以我改變了路線,從會話控制器用戶是這樣的名字還真所有鋼軌下沿變化。超級簡單的身份驗證railscast

我遇到了一個問題,在屏幕錄像中它具有下面的new.html.erb文件。

<div class="content"> 
    <p> 
     <% form_tag user_path do %> 
      Password: <%= text_field_tag :password %> 
     <%end%> 
    </p> 
</div> 

當我嘗試這個,我得到一個錯誤http://localhost:3000/login

沒有路由匹配{:動作=> 「秀」,:控制器=> 「用戶」}

當我用耙子查看我的路線我得到這個。

user_index GET /user(.:format)    user#index 
        POST /user(.:format)    user#create 
     new_user GET /user/new(.:format)   user#new 
     edit_user GET /user/:id/edit(.:format)  user#edit 
      user GET /user/:id(.:format)   user#show 
        PUT /user/:id(.:format)   user#update 
        DELETE /user/:id(.:format)   user#destroy 
      login  /login(.:format)    user#new 
      logout  /logout(.:format)    user#destroy 

在我的路線文件中,我有這個。

resources :user 
    match 'login' => 'user#new' 
    match 'logout' => 'user#destroy' 

所以我不知道該怎麼辦屏幕蒙上文件與線<%的form_tag user_path工作要做%> 如果我改變,要new_user_path那麼它帶給我的new.html.erb頁。但是現在 密碼:<%= text_field_tag:password%>字段不會顯示在頁面上。我在這裏做錯了什麼。

UPDATE:

所以我創建了一個叫做會話,而不是我的用戶控制器,它不應該有差別的控制器,但基於SHUMAcupcake評論我做錯了,我決定刪除我的用戶控制器和就像屏幕演播一樣創建一個叫做會話。正如我懷疑同樣的問題發生。現在唯一的區別是我所有的路由都被命名爲會話,而不是用戶所期望的。

是的我已經重新啓動我的應用程序,仍然是同樣的問題。請查看我的rake路由輸出,您可以看到user_path將進入show動作,而不是根據屏幕顯示的內容 - 將其轉換爲創建動作。

+0

你有創建和銷燬你的用戶控制器的方法嗎?你需要一個sumbit_tag發送表單中的數據 – SHUMAcupcake

+0

是的SHUMAcupcake我有創建和銷燬方法,就像屏幕轉換在我的UserController中。我甚至無法添加提交標籤,因爲您可以看到如果您通讀我的帖子它說我得到一個錯誤,因爲<%form_tag user_path do%>錯誤沒有路由匹配{:action =>「show」, :controller =>「user」} – Chapsterj

+0

根據我的路線,user_path行將進入show動作,以便在screencast中如何執行新動作。當新的操作是new_user_path時。這沒有意義。 – Chapsterj

回答

0

試試這個:

map.login 'login', :controller => 'users', :action => 'new' 
map.logout 'logout', :controller => 'users', :action => 'destroy' 

,並檢查是否在您的用戶MAPP有一個放映視圖,並檢查你,你有你的用戶控制器表演方法。

像這樣的東西在users_controller.rb:

def show 
    #some code 
end 
+0

我已經在我的路線文件中有這個。看到上面唯一的區別是語法不同,現在在rails 3中。不需要使用map。匹配'登錄'=>'用戶#新' 匹配'登出'=>'用戶#銷燬' – Chapsterj

+0

你做錯了,你不需要把這個邏輯放在用戶控制器中。您應該創建一個會話控制器和應用程序方法,通過檢查會話變量來檢查用戶是否已登錄,並且有一些if stats檢查用戶是否登錄。 – SHUMAcupcake

+0

什麼不確定你的意思。我正在複製屏幕視頻。唯一的區別是我的Controller從會話到用戶的名稱。 – Chapsterj

1

你需要做的就是用複數在你的路徑變量,也寫的form_tag方法,以HTML的結果,像這樣:

<%= form_tag users_path do %> 
+0

很好的答案,並感謝您發佈代碼示例。 – Brian