1

我创建了一个炼油厂扩展程序,用于管理学校的实地考察。

我当前用于管理端的 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 是我与实地考察相关联的模型。

我正在使用来自我的 Fieldtrip 编辑页面的 ajax 请求。我想调用的网址是“refinery/fieldtrips/destory_pin

目前在我的实地考察路线文件中,我有以下内容

Refinery::Core::Engine.routes.append 做

  # 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

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

4

1 回答 1

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
于 2014-07-15T16:23:26.610 回答