0

リソースにカスタム アクションを追加しようとしていますが、ルーティング エラーが発生しますNo route matches [GET] "/products/list/up"。routes.rb の URI をコメントアウトしてみましたが、うまくいきません。私は何を間違っていますか?

私はこれを持っていますroutes.rb

 namespace :api, :defaults =>{format: 'json'} do
 scope module:  :v1 ,constraints: ApiConstraints.new(version:1, default: true) do

resources :products do
member do
  match  "/list/up" =>"products#product_list" ,:via=>:get
  #get "/list/up" , :action=>"product_list"
  #get "/list/up" , :to=>"product_list"
end
end
 end
 end

products_controller.rb

def product_list
  @products= Product.all
  respond_to do |format|
    format.json { render json: @products.to_json}
  end
end
4

1 に答える 1

1

パスに何も指定しないcollection代わりに試してください:memberid

resources :products do
    collection do # <-----<
        get  "/list/up" =>"products#product_list"
    end
end

実行すると次のようになりrake routesます。

list_up_products GET    /products/list/up(.:format)  products#product_list
        products GET    /products(.:format)          products#index
                 POST   /products(.:format)          products#create
     new_product GET    /products/new(.:format)      products#new
    edit_product GET    /products/:id/edit(.:format) products#edit
         product GET    /products/:id(.:format)      products#show
                 PUT    /products/:id(.:format)      products#update
                 DELETE /products/:id(.:format)      products#destroy
于 2012-11-19T18:14:43.963 に答える