[英]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=1
或Doe=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.