2014-01-15 1 views
3

Я хочу включить модуль MultipartForm в ApplicationController, чтобы расширить функциональность для всех контроллеров с помощью методов из этого модуля.Я получил ошибку маршрутизации в ActionController до перезагрузки сервера rails

Каждый раз, когда я делал изменения в любых контроллерах в приложении, я получил эту ошибку. Поэтому я должен перезапустить свое приложение. Тогда это прекрасно работает.

От 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 

Можете ли вы предложить решение, как расширить функциональные возможности контроллеров с модулем и не нужно для перезапуска сервера при изменении любого кода. Как это сделать в лучших рельсах 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] 
+0

'application_controller.rb: 8' показать мне эта линия пожалуйста –

+0

линия 8 является:' включают MultipartForm' – wiseland

+0

попытаться поместить 'mulitpart_form.rb' под 'you_app_name/lib/extras /'. –

ответ

0

Для устранения этой проблемы использовать инициализатор. Создание load_extensions.rb в рельсах initializers реж load_extensions.rb является:

ActiveSupport.on_load(:action_controller) do 
    include MultipartForm 
end