如何定义路线,以获得以下结果:
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"
答案 0 :(得分:1)
要传递参数,您可以执行以下操作:
new_ad_path(type: "sometype")
这将导致:
/ads/new?type=sometype
然后在控制器中,您可以检查参数类型并执行所需的操作。
答案 1 :(得分:1)
get '/ads/new/:type' => 'ads#new', as: :new_ad
@ mind.blank的解决方案也可以正常使用
答案 2 :(得分:1)
您可以使用以下内容定义这些路线:
resources :ads, except: [:index, :new] do
get '/ads/new/:type', on: :collection, as: :new_ad
end