学校の 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 が発生します
ルートを間違っていると確信しており、これを修正する方法について提案が必要です。