Рельсы 3.1 монтируемые движки HTTP 404 ошибка при ajax после вызова

Я создаю свой первый плагин для движков Rails 3.1, в котором у меня есть контроллер по имени инициатив_контроллер, и у меня есть действие, известное как загрузка, всякий раз, когда я пытаюсь позвонить, чтобы загрузить действие через jquery ajax, вызов "post" вызывает его, возвращая мне ошибку 404. проблема в rout.rb, потому что он использовал работу в Rails 3.0

Мой route.rb выглядит так

Marcal::Engine.routes.draw do
   resources :media
   resources :initiatives
   post "initiatives/upload"
end

Мои инициативы_controller.rb

class InitiativesController < ApplicationController
   def upload
     puts "hiiiii"
     @medium = Medium.new(params[:medium])
     if @medium.save
        render :json => { 'status' => 'success' }
     else
        render :json => { 'status' => 'error' }
     end
  end

конец конец

И я использовал сделать вызов AJAX, как показано ниже

          $.ajax({
            url: "/initiatives/upload",
            type: "POST",
            data: "medium=something"
            dataType: "json",
            success: function(sucessdata)
            {
              alert("success");
            }

         });      

конец

1 ответ

Ваше фиктивное приложение, вероятно, смонтировано в "/ marcal", который используется по умолчанию при создании монтируемого движка. Вы, вероятно, не простой Ajax, потому что он отправляет POST на " / arguments / upload " вместо желаемого " / marcal / инициатив / загрузка ".

Возможно, вы захотите переименовать ваш файл javascript из "name.js" в "name.js.erb" и изменить его содержимое на:

$.ajax({
  url: "<%= root_path %>initiatives/upload",
  type: "POST",
  data: "medium=something"
  dataType: "json",
  success: function(sucessdata)
  {
    alert("success");
  }
});

root_path является ключом здесь.

Другие вопросы по тегам