0

「レーキルート」を実行すると、リストに表示される次のルートがあります。

         page_upload_image POST   /pages/:page_id/upload_image(.:format)                         pages#upload_image

ルートファイルには次のものもあります。

resources :pages do
  post :sort, :on => :collection 
  post :upload_image, :on => :collection
end

次に、JavaScript を使用して、以下から取得した値をキャプチャして POST します。

%form.new-page-image{:class => "hide", :action => "/pages/#{@page.id}/upload_image"}
  %input.page_image{:type => "file", :name => "page[image]", :multiple => "true"}

ページコントローラーの upload_image アクションには次のものがあります。

def upload_image
  image = params[:page][:image]
  uploader = PageImageUploader.new
  uploader.store!(image)

  render json: uploader.to_json
end

何らかの理由で、ルートが存在するにもかかわらず、投稿すると次のようになります。

ActionController::RoutingError (No route matches [POST] "/pages/1/upload_image"):

正当に見える (rake ルートを実行すると正しく表示される) ルートに投稿しようとすると、なぜこのエラーが返されるのか疑問に思っています。

4

1 に答える 1

0

コレクション ルートの代わりにメンバー ルートが必要なように見えるため、ルートを次のように変更してみてください。

resources :pages do
  post :sort, :on => :collection 
  post :upload_image, :on => :member
end

また、ルート内で補間を使用しないことをお勧めします。代わりに、 を使用してルートに名前を付け、代わりに名前を使用してルートをas:呼び出してみてください。

于 2013-10-15T03:17:13.253 に答える