2011-03-05 47 views
13

Câu hỏi có nhiều Nhận xét.Ghi đè phương thức trợ giúp tuyến đường

URL "câu hỏi/123" hiển thị câu hỏi.

URL:

"câu hỏi/123 # câu trả lời-345"

cho thấy một câu hỏi và nêu bật một câu trả lời. 345 - là id của mô hình Trả lời, "answer-345" là thuộc tính id của phần tử HTML.

tôi cần phải ghi đè "answer_path (a)" phương pháp để có được

"câu hỏi/123 # câu trả lời-345"

thay vì

"câu trả lời/345 "

Làm cách nào để thực hiện?

Trả lời

16

Tất cả các phương thức trợ giúp đường dẫn và url chấp nhận các đối số tùy chọn.
gì bạn đang tìm kiếm là anchor luận:

question_path(123, :anchor => "answer-345") 

Nó được ghi lại trong URLHelper#link_to examples.

Sử dụng lập luận này, bạn sẽ có thể để tạo ra một helper answer_path qua:

module ApplicationHelper 

    def answer_path(answer) 
    question_path(answer.question, :anchor => "answer-#{answer.id}") 
    end 

end 
+0

Không, tôi cần nó. answer_path thực sự sẽ trỏ đến đường dẫn của câu hỏi, và cũng nối thêm phần băm. – AntonAL

+0

Cập nhật câu trả lời bằng phương thức trợ giúp. Hy vọng rằng sẽ làm việc cho bạn. – rubiii

+1

Cảm ơn. Phương pháp này nên được đặt ở đâu, để được ưu tiên hơn answer_path mặc định? – AntonAL

0

Cung cấp một giải pháp trong đó bao gồm nhiều khu vực (chỉ hoạt động không chỉ trong quan điểm mà còn ở bộ điều khiển/console)

module CustomUrlHelper 
    def answer_path(answer, options = {}) 
    options.merge!(anchor: "answer-#{answer.id}") 
    question_path(answer.question, options) 
    end 
end 

# Works at Rails 4.2.6, for earliers versions see http://stackoverflow.com/a/31957323/474597 
Rails.application.routes.named_routes.url_helpers_module.send(:include, CustomUrlHelper) 
Các vấn đề liên quan