0

我有像这样的网址http://example.com/posts/?tag=2

routes.rb的是

resources :posts do
  get 'tag', :on => :collection
end

我需要像这样的链接http://example.com/posts/tag/linux

我的桌子是:

posts(id,title)
tags(id,name)
taggings(id, post_id, tag_id)
4

1 回答 1

2

你可以做某事。喜欢

resources :posts do
  get 'tag/:name', on: :collection
end

在您的控制器中,您可以在 url 参数中找到带有名称的标签,并获取带有此标签的所有帖子。

Tag.where(name: params[:name]).posts

或者你在你的Post模型中实现一个函数,就像find_by_tag(tag)这样为你做的,所以你只需要调用

Post.find_by_tag(params[:name])

在您的控制器操作中,可读性更好。

于 2012-09-04T22:04:16.410 回答