問題有很多評論。覆蓋路線幫手方法
URL「questions/123」顯示一個問題。
的URL:
「的問題/ 123#答案-345」
顯示了一個問題,突出一個答案。 345 - 是Answer模型的id,「answer-345」是HTML元素的id屬性。
我需要重寫 「answer_path(一)」 的方法來獲得
「的問題/ 123#答案-345」
,而不是
「的答案/ 345 「
怎麼辦?
問題有很多評論。覆蓋路線幫手方法
URL「questions/123」顯示一個問題。
的URL:
「的問題/ 123#答案-345」
顯示了一個問題,突出一個答案。 345 - 是Answer模型的id,「answer-345」是HTML元素的id屬性。
我需要重寫 「answer_path(一)」 的方法來獲得
「的問題/ 123#答案-345」
,而不是
「的答案/ 345 「
怎麼辦?
所有url和路徑幫助器方法都接受可選參數。
什麼你要找的是爭論anchor
:
question_path(123, :anchor => "answer-345")
它記錄在URLHelper#link_to examples。
使用這種說法,你應該能夠通過創建answer_path
幫手:
module ApplicationHelper
def answer_path(answer)
question_path(answer.question, :anchor => "answer-#{answer.id}")
end
end
提供覆蓋更多的區域(作品不僅在視圖中,而且在控制器/控制檯)
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)
的解決方案
不,我確實需要它。 answer_path實際上應該指向它的Question的路徑,並且還附加散列部分。 – AntonAL
用輔助方法更新了答案。希望這對你有用。 – rubiii
謝謝。這個方法應該放在哪裏,優先於默認的answer_path? – AntonAL