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

一般に、新しいパスで type param を指定し、次のようなユーザー パス ヘルパーを使用できるようにする必要があります。

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

3 に答える 3

1

これらのルートを次のように定義できます。

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

あなたのroutes.rbで

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

@ mind.blank のソリューションも正常に機能します

于 2013-02-09T11:41:58.617 に答える
1

パラメータを渡すには、次のようにします。

new_ad_path(type: "sometype")

これにより、次のようになります。

/ads/new?type=sometype

次に、コントローラーでパラメータータイプを確認し、必要なことを何でも実行できます。

于 2013-02-09T09:55:14.930 に答える