如何为新的Refinery CMS管理操作添加路由

时间:2013-05-01 20:28:06

标签: ruby-on-rails refinerycms

我创建了一个炼油厂扩展程序,用于管理学校的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

我确定我的路线错误,需要有关如何纠正此问题的建议。

1 个答案:

答案 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