2015-05-19 11 views
11

Làm cách nào để khai báo biến toàn cục trong Ruby on Rails?Làm cách nào để khai báo biến toàn cục trong Ruby on Rails?

mẫu mã của tôi:

trong tôi controller#application.rb:

def user_clicked() 
    @current_userid = params[:user_id] 
end 

trong layout#application.html.haml Tôi có sidebar của tôi với liên kết này:

= 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 

trong tôi views#view_user.html.haml:

%h2 @current_userid 

Tôi muốn khai báo một biến toàn cầu có thể sửa đổi bộ điều khiển của tôi và sử dụng nó ở bất kỳ đâu, như bộ điều khiển, khung nhìn, v.v. Ở trên chỉ là một kịch bản mẫu. Nếu tôi nhấp vào liên kết John hoặc Doe, nó sẽ gửi user_id đến bộ điều khiển và khi tôi nhấp vào liên kết "Xem người dùng đã nhấp", nó sẽ hiển thị liên kết được nhấp cuối cùng. Đây là John=1 hoặc Doe=2.

Tất nhiên nếu tôi nhấp vào liên kết "Xem người dùng đã nhấp" trước, liên kết sẽ hiển thị nil.

+1

Xin lỗi, tôi không hiểu câu hỏi của bạn. – Surya

+0

Kiểm tra [This] (http://stackoverflow.com/questions/12112765/how-to-reference-global-variables-and-class-variables) – Abhi

+0

Xin chào ... Xin lỗi vì ngữ pháp xấu của tôi^_^Tôi đã chỉnh sửa câu hỏi^_^và kịch bản mẫu. Những gì tôi đang cố gắng nói là tôi muốn một biến toàn cầu mà tôi có thể truy cập ở bất cứ đâu. như ví dụ trên, nếu tôi nhấp vào liên kết John hoặc Doe, nó sẽ gửi user_id tới bộ điều khiển và khi tôi nhấp vào liên kết "Xem người dùng đã nhấp", nó sẽ hiển thị liên kết được nhấp cuối cùng, đó là John = 1 hoặc Doe = 2. Ofcourse nếu tôi nhấp vào "Xem người dùng nhấp vào" liên kết đầu tiên, nó sẽ hiển thị số không.^_^Xin hãy giúp^_^ –

Trả lời

19

Trong các biến toàn cục của Ruby được khai báo bằng cách đặt trước các định danh với $

$foo = 'bar' 

Mà bạn hiếm khi thấy sử dụng cho a number of reasons. Và nó không thực sự là những gì bạn đang tìm kiếm.

Trong biến dụ của Ruby được khai báo với @:

class DemoController 
    def index 
    @some_variable = "dlroW olleH" 
    @some_variable = backwards 
    end 
    private 
    def backwards 
    @some_variable.reverse 
    end 
end 

Rails tự động chuyển biến dụ của bộ điều khiển với bối cảnh xem.

# /app/views/demos/index.html.haml 
%h1= @some_variable 

Đoán kết quả đầu ra và tôi sẽ cung cấp cho bạn một cookie.

Trong ví dụ @global_variable của bạn là số không từ controller#sample_1 không được gọi - yêu cầu sẽ đi qua controller#sample_2.

def sample_2 
    @global_variable = "Helloword" 
end 
+0

Xin chào ... Cảm ơn bạn đã trả lời^_^Tôi đã chỉnh sửa câu hỏi của mình ở trên^_^và thay đổi kịch bản mẫu. Những gì tôi đang cố gắng nói là tôi muốn một biến toàn cầu mà tôi có thể truy cập ở bất cứ đâu. Nếu tôi nhấp vào liên kết John hoặc Doe, nó sẽ gửi user_id tới bộ điều khiển và khi tôi nhấp vào liên kết "Xem người dùng đã nhấp", nó sẽ hiển thị liên kết được nhấp cuối cùng, đó là John = 1 hoặc Doe = 2. Ofcourse nếu tôi nhấp vào "Xem người dùng nhấp vào" liên kết đầu tiên, nó sẽ hiển thị số không. Xin lỗi vì ngữ pháp xấu của tôi^_^ –

+0

Tôi nghĩ rằng những gì bạn đang tìm kiếm có thể là các phiên http://guides.rubyonrails.org/action_controller_overview.html # session – max

+0

Cảm ơn các phiên này^_^... Tôi đã thử và tôi đang sử dụng nó ở mọi nơi ... phiên [: global_variable] –

Các vấn đề liên quan