rails 3.1可安装的引擎HTTP 404错误的ajax post调用

时间:2012-01-15 08:01:14

标签: ruby-on-rails-3 jquery ruby-on-rails-plugins rails-engines

我正在构建我的第一个Rails 3.1引擎插件,其中我有一个名为initiative_controller的控制器,并且每当我尝试通过jquery ajax调用上传动作时都知道上传操作“post”调用它返回我404错误我觉得在routes.rb中存在一些问题,因为它在Rails 3.0中使用了工作

我的routes.rb看起来像

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

My initiatives_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 个答案:

答案 0 :(得分:0)

您的虚拟应用程序可能安装在“/ marcal”上,这是您创建可安装引擎时的默认设置。你是ajax可能并不简单,因为它在“ / initiatives / upload ”而不是所需的“ / marcal / initiatives / upload ”上发送POST。

您可能希望将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是这里的关键。