2012-04-15 38 views
1

我很新的軌道,基本上我想做一個用戶註冊表單。Rails路線尋找表演動作

我目前使用的鐵軌3.2.3

基本上我想要做的基本路線,如用戶/對用戶的基本路線REST的頂部登記。

這裏是我的routes.rb

resources :user do 
    collection do 
    get 'register' 
    end 
end 

這裏是我的耙路線:

 register_user_index GET /user/register(.:format) user#register 
    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 

從我的理解,因爲註冊用戶是展出的頂部,它應該與寄存器匹配第一在展示之前。

但是,當我嘗試做本地主機:3000 /用戶/註冊,它給了我這個錯誤:

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

有人可以幫助我嗎?

謝謝!

+0

您是否有用戶#註冊的視圖?如果是這樣,你可以發佈內容? – 2012-04-15 10:28:43

+0

你確定沒有錯別的地方嗎?即使它錯過了「登記」路線,爲什麼會說你沒有「show」路線?它就在那裏!你有其他路線有問題嗎? – tsherif 2012-04-15 12:39:50

回答

1

(我會做這樣的評論,但我需要的代碼示例中的標記。)

我嘗試用Rails 3.1.4您的路線和它的工作就像你的預期。

我注意到你使用的是字符串而不是符號。更標準的方法是:

resources :users do 
    collection do 
    get :register 
    end 
end 
+0

而且我也使用符號進行了更改。我不知道它是否有任何區別。 – user1334345 2012-04-15 19:47:31

0

你拼錯了你的資源?它通常是複數,users。但那不是重點 - 這只是一個慣例。關鍵是您可能創建了一個名爲UsersController的控制器,並且此控制器不會遵循您的資源名稱。檢查它,或者將它命名爲UserController。但我強烈建議你做到這一點 - 如果你需要/user路徑,只需使用選項:path與你的資源,你會被罰款:

resources :users, path: 'user' do 

再次,如果它不是爲時已晚,請使用:

resources :users do 

而您的註冊路徑將爲/users/register

+0

謝謝!有效!!我認爲這是公約的事情。 – user1334345 2012-04-15 19:47:06