我有一个Post
模型,其category
属性和相应的PostsController
。
我想覆盖默认的url helper来生成以下内容:
@post = Post.create(category: 'posts')
<%= link_to 'Post Link', @post %>
# /posts/1
@post = Post.create(category: 'articles')
<%= link_to 'Article Link', @post %>
# /articles/2
我想调用Post
的默认网址助手,但要根据category
列创建不同的网址。
更新
我最终覆盖了网址助手:
module PostsHelper
def post_path(post, options={})
self.send("#{post.category}_path", post, options)
end
def post_url(post, options={})
self.send("#{post.category}_url", post, options)
end
end
答案 0 :(得分:1)
命名路由是您想要的:
get 'posts/:id', to: 'posts#<controller-action>', as: 'posts'
<%= link_to 'Post Link', posts_path(@post) %>
get 'articles/:id', to: 'posts#<controller-action>', as: 'articles'
<%= link_to 'Article Link', articles_path(@post) %>
见这里:http://guides.rubyonrails.org/routing.html#naming-routes