2010-04-05 13 views
7

Trong file application_helper.rb của tôi, tôi có một chức năng như thế này:Đường ray: làm cách nào để truy cập đối tượng yêu cầu bên ngoài trình trợ giúp hoặc bộ điều khiển?

def internal_request? 
    server_name = request.env['SERVER_NAME'] 
    [plus more code...] 
end 

Chức năng này là cần thiết trong điều khiển, mô hình, và quan điểm. Vì vậy, tôi đặt mã này trong một tệp chức năng tiện ích trong thư mục lib/. Tuy nhiên, điều này không hoạt động: Tôi đã nhận được khiếu nại về request không được xác định.

Tôi làm cách nào để truy cập đối tượng request trong một tệp trong thư mục lib/?

+0

Vấn đề là thêm về cách đặt mã chỉ ở một nơi. Tôi có một chức năng sử dụng đối tượng yêu cầu. Chức năng này được sử dụng trong các khung nhìn và bộ điều khiển. Tôi có thể sao chép mã ở cả hai nơi, nhưng có vẻ như sạch hơn khi đặt mã trong thư mục lib/để cả hai chế độ xem và bộ điều khiển có thể truy cập vào một hàm duy nhất. – rlandster

+0

Câu hỏi của bạn đã là câu trả lời của tôi ... Đối tượng yêu cầu có thể được truy cập từ người trợ giúp. ;-) – hurikhan77

Trả lời

2

Điều đơn giản nhất dường như hoạt động ở đây là chuyển đối tượng yêu cầu đến phương thức.

def internal_request?(request) 
server_name = request.env['SERVER_NAME'] 
[plus more code...] 
end 

Giả định là khi phương pháp này được gọi là yêu cầu đã được thực hiện và bạn có thể chuyển nó đến phương thức.

Tôi đang cố gắng nghĩ về một tình huống mà một mô hình sẽ cần phải gọi phương thức này trực tiếp. Có vẻ như bạn có thể muốn kiểm tra xem đây có phải là internal_request trong bộ điều khiển của bạn hay không (đánh dấu nó là helper_method trong bộ điều khiển của bạn nếu bạn cần nó trong khung nhìn của bạn), và sau đó nói với mô hình của bạn đó là internal_request.

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