Как я могу объявить глобальную переменную в 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
угадайте, что он выводит и я дам вам печенье.
в вашем примере @global_variable
равна нулю, так как controller#sample_1
не вызывается-запрос будет проходить через controller#sample_2
.
def sample_2
@global_variable = "Hello World"
end