从 Rails 3 升级后不允许使用 Rails 4 方法

2024-04-07

我有一个现有的代码库,我正在尝试将其从 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 中的某种保留端点吗?


事实证明,问题出在名称“资产”上,我找不到任何文档来确认这一点,但将资产模型和控制器重命名为其他名称可以解决问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从 Rails 3 升级后不允许使用 Rails 4 方法 的相关文章

随机推荐