gpt4 book ai didi

ruby-on-rails - 我在 ActionController 中遇到路由错误,直到重新启动 rails 服务器

转载 作者:行者123 更新时间:2023-12-03 20:45:43 27 4
gpt4 key购买 nike

我想将模块 MultipartForm 包含到 ApplicationController 中,以使用此模块中的方法为所有 Controller 扩展一些功能。

每次我对应用程序中的任何 Controller 进行更改时,我都会收到此错误。所以我必须重新启动我的应用程序。然后一切正常。

来自 development.log

ActionController::RoutingError (uninitialized constant ApplicationController::MultipartForm):
app/controllers/application_controller.rb:8:in `<class:ApplicationController>'
app/controllers/application_controller.rb:3:in `<top (required)>'
app/controllers/artists_controller.rb:1:in `<top (required)>'

我的 application_controller.rb 是:

require_relative '../../lib/multipart_form'

class ApplicationController < ActionController::Base
# Prevent CSRF attacks by raising an exception.
# For APIs, you may want to use :null_session instead.
#protect_from_forgery with: :exception

include MultipartForm

private

def default_serializer_options
{root: false}
end

end

我的 multipart_form.rb 是:

module MultipartForm
# Use in controller like: send_multipart_form(:artist => artist_params)
def send_multipart_form(send_params)
_method = params && params[:_method] ? params[:_method].to_sym : :post
RestClient.send _method, ActiveResource::Base.site.to_s + related_url, send_params
end

private

def related_url
_controller_path = params && params[:controller] ? params[:controller] : ""
_id = params && params[:id] ? params[:id] : ""
"#{_controller_path}/#{_id}"
end
end

您能否提出一个解决方案,如何使用模块扩展 Controller 功能,并且无需在任何代码更改时重新启动服务器。如何以最佳 rails 4 方式做到这一点?

一些信息:

Rails server => WEBrick 1.3.1
Rails version => 4.0.2
Env => development
Ruby version => ruby 2.0.0 (2013-11-22) [x86_64-linux]

最佳答案

解决方法是使用初始化器。在 rails initializers 目录中创建 load_extensions.rbload_extensions.rb 是:

ActiveSupport.on_load(:action_controller) do
include MultipartForm
end

关于ruby-on-rails - 我在 ActionController 中遇到路由错误,直到重新启动 rails 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21140478/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com