0

如何定义路由,以获得以下结果:

 new_ad GET    /ads/new/:type(.:format)        ads#new
    ads POST   /ads(.:format)                  ads#create
edit_ad GET    /ads/:id/edit(.:format)         ads#edit
     ad GET    /ads/:id(.:format)              ads#show
        PUT    /ads/:id(.:format)              ads#update
        DELETE /ads/:id(.:format)              ads#destroy

一般来说,我需要在新路径中指定类型参数,并且能够像这样使用路径助手:

new_ad_path("somytype") # -> ads/new/somytype -> ads#new -> params[:type] = "somytype"
4

3 回答 3

1

要传入参数,您将执行以下操作:

new_ad_path(type: "sometype")

这将导致:

/ads/new?type=sometype

然后在控制器中,您可以检查参数类型并使用它做任何需要的事情。

于 2013-02-09T09:55:14.930 回答
1

在你的 routes.rb

get '/ads/new/:type' => 'ads#new', as: :new_ad

@mind.blank 的解决方案也可以正常工作

于 2013-02-09T11:41:58.617 回答
1

您可以使用以下方法定义这些路由:

resources :ads, except: [:index, :new] do
  get '/ads/new/:type', on: :collection, as: :new_ad
end
于 2013-02-09T11:46:57.123 回答