Как передать переменные между контроллером приложения и различными представлениями в Ruby on rails? Есть ли глобальная область действия, которая помогает нам отслеживать любую переменную, созданную в контроллере, и использовать ее в любом коде представления в одном приложении?Переменные контроллера не распознаются в некоторых представлениях
ответ
Чтобы использовать метод из контроллера приложения в представлении, отметьте его как вспомогательный метод. Что-то вроде этого
class ApplicationController < ActionController::Base
def current_user
@current_user ||= User.find(session[:user_id])
end
helper_method :current_user
end
Теперь метод current_user
доступен во всех видах, и он может быть использован для получения переменной @current_user
экземпляра.
Просто Написать свой код в помощнике приложения и он будет доступен через любой точки зрения в применении ..
пожалуйста, прочитайте http://guides.rubyonrails.org/action_controller_overview.html (особенно часть 3)
Это не самый лучший вариант, хотя, я рекомендую чтение об экспонировании переменных в контроллерах.
https://github.com/hashrocket/decent_exposure или https://github.com/netguru/decent_decoration
созданы только для этого, и я рекомендую их.
Переменная, объявленная следующим образом:
@current_user
, например, будут доступны в любых взглядов до тех пор, как метод, который создает, что переменная называется в контроллере для этой точки зрения.
Вы можете прочитать больше о рубиновых переменных здесь http://ruby-doc.org/docs/ruby-doc-bundle/UsersGuide/rg/variables.html
Что вы пытаетесь достичь? Можете ли вы добавить пример? – spickermann
Я на самом деле работаю над плагином redmine. У меня есть файл просмотра «_index.html.erb» в «myPlugin/app/views». Я не мог использовать переменные экземпляра (объявленные в моем контроллере приложений) из файла представлений «_index.html.erb». В файле журнала указано, что «@project» не был распознан ... Несмотря на это, я смог взаимодействовать с одним и тем же контроллером из другого представления в myPlugin/app/views/myPlugin/index.html.erb – sfaxiano