1

学校の 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

ご覧のとおり、ピンと呼んでいるものを破壊するメソッドを追加しました。witch は、私がフィールドトリップに関連付けたモデルです。

Fieldtrip 編集ページから ajax リクエストを使用しています。呼び出したい URL は「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 が発生します

ルートを間違っていると確信しており、これを修正する方法について提案が必要です。

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 に答える