2013-11-24 21 views
11

Tôi đang xây dựng một số ứng dụng mẫu đường ray trong đó tôi có hai kiểu Người dùng và Dự án. Liên kết giữa cả hai là dự án has_many của người dùng. Bây giờ câu hỏi là tôi sẵn sàng cung cấp một số thả xuống cho các dự án của người dùng trên đầu trang và nếu một số một cú nhấp chuột vào một trong đó sẽ đưa nó đến trang dự án hiển thị. Nhưng nếu người dùng đang ở trang chỉnh sửa của một dự án và chọn dự án khác từ trình đơn thả xuống, tôi muốn anh ấy tiếp cận trang chỉnh sửa của dự án mới được chọn cùng một trường hợp cho trang hiển thị bất kỳ ý tưởng nào. Giải pháp mà tôi đang tìm kiếm là: - chúng ta có thể tìm bộ điều khiển hiện tại bằng cách sử dụng params [: controller], tìm hành động hiện tại bằng cách sử dụng params [: action] làm thế nào tôi có thể tìm thấy route hiện tại. Thanx trướcCách lấy tuyến đường hiện tại trong đường ray

Nếu ai đó muốn xem mã của tôi là những gì: - đây là liên kết cho github: - 'https://github.com/peeyushsingla/session_test.git/ Ở đây tôi đang sử dụng liên kết đơn giản nhưng thực sự tôi sẽ cung cấp một số giọt xuống sẽ được hiển thị mà sẽ làm việc cho tất cả các chỉnh sửa, show, mới mỗi hành động

Trả lời

23

để lấy URL:

# Current URL: 
request.original_url 

# Current relative URL: 
request.request_uri 

Ngoài ra, bạn có thể kiểm tra bằng phương pháp current_page cho dù bạn đang ở trong một lộ trình nhất định.

current_page?(my_path) 
# => true/false 

Đối với Rails 4 sử dụng:

# Current URL: 
request.original_url 

# Current relative URL: 
request.fullpath 
+3

'request.request_uri' không làm việc cho tôi (Rails 4) Tôi phải sử dụng' request.path' thay – jmarceli

+0

cảm ơn, tôi cập nhật câu trả lời –

+0

không xác định phương pháp CURRENT_PAGE? –

20

Đối với Rails 4

URL ví dụ: http://localhost:3000/allreferred?&referred_name=maria

request.path -> "/allreferred"

request.base_url -> "http://localhost:3000"

request.fullpath -> "/allreferred?&referred_name=maria"

request.original_url -> "http://localhost:3000/allreferred?&referred_name=maria"

+1

Upvote cho các ví dụ thực tế :) –

2

Bạn có thể sử dụng url_for

def current_path(params={}) 
    url_for(request.params.merge(params)) 
end 

URL ví dụ http://localhost:3000/posts

current_path -> /posts

current_path(order: asc) -> /posts/?order=asc

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