我创建了一个炼油厂扩展程序,用于管理学校的Fieldtrips。
管理员方面的当前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的方法,女巫是我与场地条相关联的模型。
我正在使用Fieldtrip编辑页面中的ajax请求。我想打电话的网址是“refinery / fieldtrips / destory_pin
目前在我的路线档案中我有以下
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我确定我的路线错误,需要有关如何纠正此问题的建议。
答案 0 :(得分:0)
使用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
end