[英]Overriding a resource route to / (root) in Rails3: not changing the path helper?
我是Rails3的新手,我基本上創建了一個subscribers
腳手架,我只希望我的應用程序響應new
和create
操作。
所以在config/routes.rb
我定義了:
resources :subscribers, :only => [:new, :create]
哪種方式有效
GET /subscribers => subscribers#new POST /subscribers => subscribers#create
現在我希望我的應用程序在/
(root)而不是/subscribers
展示訂閱者資源,所以這就是我所做的:
match '/' => "subscribers#new" match '/' => "subscribers#create" match '/' => "subscribers#thankyou" resources :subscribers, :only => [:new, :create]
哪種方式有效,但可能不是最糟糕的事情:這里有我遇到的問題:
/subscribers
URL而不是/
,表單是使用form_for(@subscriber)
幫助程序方法創建的,因此path
幫助程序必須以某種方式不受path
影響 /subscribers
的請求 /
,然后在連接回來時刷新(瀏覽器要求重新提交=> OK),Rails應用程序崩潰(我沒有錯誤堆棧)因為這是生產),為什么呢? 此外,我嘗試以這種方式設置路線:
resources :subscribers, :only => [:new, :create] do collection do post '/' => :create get '/' => :new end end
哪個可能是DRYer,但它不能解決任何這些問題。
我相信這很簡單,請幫忙!
感謝您的回答,它幫助我找到了我的問題的確切解決方案:
resources :subscribers, :only => [:new, :create], :path => '', :path_names => {:new => ''}
測試並使用Rails 3 :)
你可以做到
resources :subscribers, :path => ''
並確保您的根模板提供GET /
,例如將其添加到SubscribersController:
def index
render 'welcome/index'
end
我嘗試使用match "/"
聲明來覆蓋資源索引操作並將其映射到另一個控制器,但顯然resources
聲明總是完全覆蓋手動聲明的路由。
對於列表中的數字2,刪除此行,並在erb中重寫任何_path或_url方法:
resources :subscribers, :only => [:new, :create]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.