Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/52.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 发送至路线不工作,尽管路线显示在“中”;"耙路";_Ruby On Rails_Ruby On Rails 3 - Fatal编程技术网

Ruby on rails 发送至路线不工作,尽管路线显示在“中”;"耙路";

Ruby on rails 发送至路线不工作,尽管路线显示在“中”;"耙路";,ruby-on-rails,ruby-on-rails-3,Ruby On Rails,Ruby On Rails 3,我有以下路径,当我执行“rake routes”时,该路径出现在列表中: 我的路由文件中还包含以下内容: resources :pages do post :sort, :on => :collection post :upload_image, :on => :collection end 然后,我使用JavaScript捕获并发布从以下内容中提取的值: %form.new-page-image{:class => "hide", :action => "/

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

我的路由文件中还包含以下内容:

resources :pages do
  post :sort, :on => :collection 
  post :upload_image, :on => :collection
end
然后,我使用JavaScript捕获并发布从以下内容中提取的值:

%form.new-page-image{:class => "hide", :action => "/pages/#{@page.id}/upload_image"}
  %input.page_image{:type => "file", :name => "page[image]", :multiple => "true"}
ActionController::RoutingError (No route matches [POST] "/pages/1/upload_image"):
在我的页面控制器中,我有以下上载图像操作:

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

  render json: uploader.to_json
end
出于某种原因,即使路线存在,当我发布到它时,我得到以下信息:

%form.new-page-image{:class => "hide", :action => "/pages/#{@page.id}/upload_image"}
  %input.page_image{:type => "file", :name => "page[image]", :multiple => "true"}
ActionController::RoutingError (No route matches [POST] "/pages/1/upload_image"):

我想知道为什么一个看起来合法的路由(在执行rake路由时正确显示)在我尝试发布时会返回此错误。

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

resources :pages do
  post :sort, :on => :collection 
  post :upload_image, :on => :member
end
我还建议不要在路线中使用插值,因为它会很快变得冗长和混乱。相反,尝试使用
将您的路线命名为:
,并使用这些名称来调用它们