簡體   English   中英

Ruby on Rails:添加新路由

[英]Ruby on Rails : add a new route

我是RoR的新手,所以這是一個新手問題:
如果我有一個控制器users_controller.rb並且我添加了一個方法foo ,它不應該創建這個路由嗎?

HTTP://www.localhost:3000 /用戶/富

因為當我這樣做時,我收到了這個錯誤:

無法找到id = foo的用戶

我當然添加了一個視圖foo.html.erb

編輯:
我添加到routes.rb這段代碼,但我得到了同樣的錯誤:

resources :users do
    get "signup"
  end

這在rails 3中不會自動運行。您需要添加

resource :users do
    get "foo"
end

到您的routes.rb

你肯定想看看http://guides.rubyonrails.org/routing.html ,它很好地解釋了路由。

Rails指示你到show控制器,並認為你提供foo作為:show param的id param。

您需要設置一個路由,該路由將在用戶#show中匹配為/ users /:id之前進行調度

您可以通過添加以下內容來修改config/routes.rb來替換您描述的現有資源:users

resource :users do
    get "foo"
end

只是為了添加其他答案,在早期版本的Rails中,曾經是一個默認路由

match ':controller(/:action(/:id))(.:format)'

它給出了您描述的表單控制器/操作的請求將在給定控制器上調用給定方法的行為。 此行仍在routes.rb但默認情況下已注釋掉。 您可以取消注釋以啟用此行為,但上面的注釋解釋了為什么不建議這樣做:

# This is a legacy wild controller route that's not recommended for RESTful applications.
# Note: This route will make all actions in every controller accessible via GET requests.

在架構':controller/:action(.:format)' ,您還可以輕松執行以下操作

resources :users do
   get "foo", on: :collection
end

要么

resources :users do
  collection do
    get 'foo'
  end
end

http://guides.rubyonrails.org/routing.html#adding-collection-routes

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM