Ошибка маршрутизации: неинициализированная константа в Rails 3 - PullRequest
9 голосов
/ 03 сентября 2010

У меня есть файл, содержащий вспомогательный класс, примерно такой:

app / classes / myfile.rb

Module mymodule
  class myclass
    # blah blah
  end
end

Я хочу использовать этот класс в контроллере, поэтому я написалчто-то вроде этого:

require 'myfile'

class MyController < ApplicationController

  include mymodule  

  def index
    mymodule::myclass.new
  end

end

Маршрут для контроллера определяется следующим образом:

  match 'mycontroller', :to => 'mycontroller#index'

Теперь о странном поведении, с которым я сталкиваюсь.Он отлично работает при первом запуске после запуска сервера.Но когда я обновляю страницу или снова нажимаю на URL, я получаю следующую ошибку:

Routing Error

uninitialized constant MyController::mymodule

Я не могу ничего понять из этой ошибки и не могу понять, почему она не работает со второго попаданиятолько вперед.Что происходит?

Ответы [ 2 ]

8 голосов
/ 19 октября 2010

Вообще говоря, Rails любит видеть файлы, содержащие:

module MyModule

назван my_module.rb

Модули обычно пишутся с заглавной буквы

Кроме того, он считает, что MyModule находится в классе MyController, а это не так. Вы можете попробовать

include ::MyModule 

для доступа к нему из области верхнего уровня.

Я также не знаю, включают ли ваши пути загрузки каталог ваших классов, так что он, вероятно, не загружает файл myfile.rb с самого начала.

2 голосов
/ 03 сентября 2010

Я изменил требование myfile для загрузки myfile.rb, и теперь оно работает нормальноЯ не знаю, решил ли я проблему все же.Я не знаю, что происходит.Может ли кто-нибудь просветить меня?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...