尽管在“耙路线”中显示路线,但路线无法工作

时间:2013-10-15 03:02:29

标签: ruby-on-rails ruby-on-rails-3

我有以下路线,当我执行“rake routes”时,它出现在列表中:

         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路线时正确显示)会在我尝试发布时返回此错误。

1 个答案:

答案 0 :(得分:0)

请尝试将路线改为此路线,因为看起来您想要成员路线而不是收集路线:

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

我还建议不要在路线中使用插值,因为它很快就会变得冗长而混乱。而是尝试使用as:为您的路线命名,然后使用名称来调用它们。