2014-02-21 3 views
0

Я пытаюсь сделать вызов ajax для действия контроллера.Ajax вызов для действия контроллера: RoutingError

Ajax вызова:

$.ajax({url: "offerings/remove_from_sale", type: "POST"}) 

контроллер:

class Manage::GroundServiceController < ApplicationController 

    def remove_from_sale 
    Ts::User.all.each do |user| 
     unless user.ground_service == nil 
     if user.ground_service.ID == params[:id] 
      true 
     end 
     end 
    end 
    end 

end 

маршруты:

namespace :manage do 
    resources :ground_service, except: [:new, :create, :edit, :update, :destroy] do 

     collection do 

     get :edit 
     get :products 

     resources :events, only: [:show, :update] do 
      member do 
      post :accept 
      end 
     end 

     resources :offerings, only: [:update, :remove_from_sale] 
     resources :prices, only: [:update] 
     end 
    end 
end 

Существует ошибка

No route matches [POST] "/manage/ground_service/offerings/remove_from_sale" 

Что я делаю неправильно? Должен ли я поставить remove_from_sale действие на offerings_controller? Пожалуйста, спросите, нужна ли вам дополнительная информация.

ответ

1

remove_from_sale не по умолчанию маршрута ресурсов, поэтому необходимо указать его:

resources :offerings, only: :update do 
    collection do 
    post :remove_from_sale 
    end 
end 
+0

Он работает, спасибо! Можете ли вы помочь со следующей проблемой? Существует ошибка 'Шаблон отсутствует' manage/offersings/remove_from_sale, но мне не нужен файл просмотра для этого действия. –

+0

@Gvcci это еще один вопрос, и я не могу помочь без какого-либо контекста. –

+0

Поскольку вы вызываете его через ajax, вашему методу remove_from_sale, вероятно, нужна строка format.js, или вы можете добавить рендер: nothing => true, если не требуется шаблон. – emcanes

0

Если URL не начинается с косыми чертами, он добавит ее к текущей странице URL. Попробуйте поставить косую черту в начале вашего URL-адреса ajax.

+0

Желательно в этом случае. –

+0

ах. достаточно справедливо. Лично я всегда использую полный путь с любым запросом. –

+0

Я тоже. Во всяком случае, это не источник проблемы. –

Смежные вопросы