我正在构建我的第一个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");
}
});
端
答案 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是这里的关键。