Как я могу объявить глобальную переменную в 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