Я пытаюсь получить доступ к помощнику URL из класса модуля. Вот мой код:Доступ к url_helper из класса двигателя
module Station
class Plugins
@@plugins = [] unless defined?(@@plugins) && @@plugins.class == Array
class << self
def all
return @@plugins.sort_by { |p| p[:weight] }
end
def register(plugin = {})
raise "plugin must be a Hash (ie.: `register(:foo => 'bar')`)" unless plugin.class == Hash
raise "plugin must contain :name (ie.: `register(:name => 'my_plugin')`)" unless plugin[:name].present?
plugin[:weight] = 1 unless plugin[:weight].present?
plugin[:href] = eval("#{plugin[:name].downcase.pluralize}_url") unless plugin[:href].present?
@@plugins.push(plugin) unless @@plugins.include?(plugin)
end
end
# include default plugins:
Station::Plugins.register(:name => "Pages", :weight => -1)
end
end
Когда я запускаю мой сервер, я получил эту ошибку назад:
undefined local variable or method `pages_url' for Station::Plugins:Class
Я много читал о том, «как назвать URL-адрес помощника из класса», но ни один из решения, которые я нашел, работали на меня.
Благодарите свой за ответ. На самом деле, помощник URL, к которому я пытаюсь получить доступ, - это сам модуль. Мой модуль называется «Станция», поэтому я изменил свой код на вызов 'station.pages_url', но у меня есть эта ошибка:' undefined local variable или method 'station 'для Station :: Plugins: Class'. Я также попытался вызвать 'my_app.pages_url', поскольку маршрут, который я хочу вызвать, отображается в' rake routes', но я получил аналогичную ошибку: 'undefined local variable или method' main_app 'для Station :: Plugins: Class'. Нужно ли включать что-то в свой модуль? – AkyRhO
См. Редактирование в моем ответе, чтобы вы могли наследовать маршруты и переменные из ApplicationController родительского приложения. Также убедитесь, что в верхней строке вашего файла route.rb находится «AddressBook :: Engine.routes.draw do». Вам не нужно добавлять «Station» из ваших путей из вашего движка. Это нужно сделать только тогда, когда вы пытаетесь получить доступ к этому пути из родительского приложения. –