我有资源,看起来像这样:轨道4 select_tag嵌套资源
resources :teams do
[...]
get 'tags/:tag', to: "teams#show", as: :tag
end
每个Team
可以有多个Posts
这在它的回合可以有多个Tags
。在我的团队秀视图中,我想显示select_tag
,其中列出了Team
的Posts
的所有标签。当用户选择一个标签时,我想重定向它们并列出该标签的所有帖子。我已经开始工作了,但不是用我的嵌套资源和我想要的URLs
。我的实现目前看起来是这样的(我用HAML
):
/ View
= form_tag team_path(@team), method: 'get', class: 'tag_form' do
.input-group
= select_tag "tag", options_from_collection_for_select(@team_tags, 'id', 'name', params[:tag]), prompt: "All tags", class: 'chosen-select'
# Controller
def show
@team_tags = @team.posts.tag_counts_on(:tags)
if params[:tag] && !params[:tag].blank?
tag = Tag.find(params[:tag])
@posts = @team.posts.tagged_with(tag.name)
else
@posts = @team.posts
end
end
这工作,但让我看起来像这样的网址:
teams/1?utf8=✓&tag=1
我要的是:
teams/1/tags/tag-name
这是可能做到的,看起来会如何?
这是路由的问题:[阅读](HTTP ://guides.rubyonrails.org/routing.html) – dax
谢谢,我认为路线是正确的。在另外一个地方,我使用'link_to'将用户重定向到'teams/1/tags/tag-name',它可以工作。但我不知道如何用我的'select_tag'来做到这一点。 – Anders
啊,好吧!我的错误:) – dax