簡體   English   中英

如何在Ruby on Rails中聲明一個全局變量?

[英]How can I declare a global variable in 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=1Doe=2

當然,如果我先點擊“查看點擊的用戶”鏈接,它將顯示nil

在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為nil,因為未調用controller#sample_1 - 請求將通過controller#sample_2

def sample_2
  @global_variable = "Hello World"
end

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM