Как объявить глобальную переменную в Ruby on Rails?
Как объявить глобальную переменную в Ruby on Rails?
Мой пример кода:
в controller#application.rb
:
def user_clicked()
@current_userid = params[:user_id]
end
в моем layout#application.html.haml
У меня есть боковая панель с этой ссылкой:
= link_to "John", user_clicked_path(:user_id => 1)
= link_to "Doe", user_clicked_path(:user_id => 2)
= link_to "View clicked user", view_user_path
в моем views#view_user.html.haml
:
%h2 @current_userid
Я хочу объявить глобальную переменную, которая может модифицировать мой контроллер и использовать его в любом месте, например, контроллер, представления и т.д. Вышеупомянутый пример - только пример. Если я нажму ссылку John или Doe, он отправит user_id
в контроллер, и когда я нажму ссылку "Просмотр щелкнутого пользователя", на нем отобразится последняя ссылка на клик. Это либо John=1
, либо Doe=2
.
Конечно, если я сначала нажму ссылку "Просмотр щелкнутого пользователя", отобразится nil
.
Ответы
Ответ 1
В Ruby глобальные переменные объявляются путем префикса идентификатора с помощью $
$foo = 'bar'
Что вы редко видите для нескольких причин. И это не совсем то, что вы ищете.
В Ruby экземпляры переменных объявляются с помощью @
:
class DemoController
def index
@some_variable = "dlroW olleH"
@some_variable = backwards
end
private
def backwards
@some_variable.reverse
end
end
Rails автоматически передает переменные экземпляра контроллера в контекст представления.
# /app/views/demos/index.html.haml
%h1= @some_variable
Угадайте, что он выводит, и я дам вам cookie.
В вашем примере @global_variable
нет ни слова, поскольку controller#sample_1
не вызывается - запрос будет проходить через controller#sample_2
.
def sample_2
@global_variable = "Helloword"
end