我有一个现有的代码库,我正在尝试将其从 Rails 3.2 升级到 Rails 4.0
我有一个名为 asset_controller 的控制器,带有“create”方法,并且我的路由文件中有一个条目:
resources :assets
在前端使用 jQuery 进行 ajax,如果我从浏览器向“/assets”发送 post 请求,我会收到 405(方法不允许):
$.ajax({method: 'POST', data: asset, url: '/assets' });
这在 Rails 3 中工作得很好,但我似乎无法弄清楚问题是什么。
Updates:
这是我的控制器的简化版本:
class AssetsController < ApplicationController
skip_before_filter :verify_authenticity_token
def create
# params[:assets] is passed if a mass addition of assets (i.e. book) occurs
assets = []
if params[:assets]
assets = params[:assets]
else
assets.push params
end
last_asset_id = 0
assets.each do |asset_data|
asset = Object.const_get(asset_data[:asset_type]).new(asset_data)
if !asset.save
json_false_errors(asset.errors.full_messages)
return
else
last_asset_id = asset.id
end
end
end
end
这是“rake paths”的输出
assets GET /assets(.:format) assets#index
POST /assets(.:format) assets#create
new_asset GET /assets/new(.:format) assets#new
edit_asset GET /assets/:id/edit(.:format) assets#edit
asset GET /assets/:id(.:format) assets#show
PATCH /assets/:id(.:format) assets#update
PUT /assets/:id(.:format) assets#update
DELETE /assets/:id(.:format) assets#destroy
这是我的开发日志:
Started POST "/assets" for 127.0.0.1 at 2015-05-27 09:39:42 -0400
(是的,这就是日志的全部内容)
发布数据:
{
"asset_type":"文档",
“标题”:“DNS”,
“标题id”:9999,
“受版权保护”:假,
“网址”:“https://confidental.url https://confidental.url“,
"pubtitle":"DNS",
“作者”:””}
另一个编辑:
我注释掉了整个路由文件以用于诊断目的,这些是进行一些手动测试的结果:
POST http://localhost:8000/assets 405 (Method Not Allowed)
POST http://localhost:8000/asset 404 (Not Found)
POST http://localhost:8000/ass 404 (Not Found)
资产是 Rails 4 中的某种保留端点吗?