2

我以为我知道如何覆盖路径助手,但我没有得到预期的行为。

我尝试将这样的内容添加到我的 ApplicationHelper 中:

def post_path(post)
  "/posts/#{post.id}/#{post.url}"
end

但由于某种原因,在我的一个控制器中,当我尝试使用post_path(@post)它时,它只返回完整的 url,类似于/posts/4faddb375d9a1e045e000068/asdf(这是浏览器中的当前 url)而不是/posts/4faddb375d9a1e045e000068/post-title-here.

在我的路线文件中:

get '/posts/:id/:slug' => 'posts#show', :as => 'post'

奇怪的是,如果我使用post_path(@post, @post.url),它可以正常工作。如果在视图中我使用post_path(@post)它可以正常工作。(@post.url返回 url 友好的标题)

万一你不知道,我试图最终得到类似于stackoverflow的行为,其中url包含id和最后一个slug,如果slug与给定id的模型不匹配,它会重定向到正确的网址。

4

1 回答 1

0

我会尝试将整体def post_path放入application_controller.rb并使其成为helper_method :post_path. 你会得到两全其美的。

于 2012-05-12T23:29:44.233 回答