问题有很多评论。覆盖路线帮手方法
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