我创建了一个refinery扩展来管理一所学校的实地考察。
我当前用于管理员端的fieldtrips_controller具有以下内容。
module Refinery
module Fieldtrips
module Admin
class FieldtripsController < ::Refinery::AdminController
crudify :'refinery/fieldtrips/fieldtrip', :xhr_paging => true
def destory_pin
@pin = Refinery::Pins::Pin.find(params[:id])
if @pin.delete
render :json => {result: "success"}
else
render :json => {result: "error"}
end
end
end
end
end
end正如你所看到的,我添加了一个方法来销毁我称之为pin的东西,witch是一个我与fieldtrips关联的模型。
我正在使用来自Fieldtrip编辑页面的ajax请求。我想调用的url是“refinery/fieldtrips/destory”
目前在我的路径文件中,我有以下内容
Refinery::Core::Engine.routes.append do
# Frontend routes
namespace :fieldtrips do
resources :fieldtrips, :path => '', :only => [:index, :show]
end
# Admin routes
namespace :fieldtrips, :path => '' do
namespace :admin, :path => 'refinery' do
resources :fieldtrips, :except => :show do
collection do
post :update_positions
post :destory_pin
end
end
end
end
end目前,当我运行rake routes时,我得到了以下内容
POST /refinery/fieldtrips/destory_pin(.:format) refinery/fieldtrips/admin/fieldtrips#destory_pin如果我在浏览器中导航到/refinery/fieldtrips/destory_pin,我会在Refinery::Admin::BaseController#error_404中得到一个NoMethodError
我确信我做的路线是错的,需要关于如何纠正这个问题的建议。
发布于 2014-07-16 00:23:27
用member代替collection,例如
namespace :fieldtrips, :path => '' do
namespace :admin, :path => 'refinery' do
resources :fieldtrips, :except => :show do
collection do
post :update_positions
end
member do
post :destory_pin
end
end
end
endhttps://stackoverflow.com/questions/16325927
复制相似问题