Ruby on rails Rails 4选择带有嵌套资源的\u标记
我有这样一个资源:Ruby on rails Rails 4选择带有嵌套资源的\u标记,ruby-on-rails,ruby,forms,nested-resources,html-select,Ruby On Rails,Ruby,Forms,Nested Resources,Html Select,我有这样一个资源: resources :teams do [...] get 'tags/:tag', to: "teams#show", as: :tag end teams/1?utf8=✓&tag=1 每个团队可以有多个帖子,依次可以有多个标签。在“我的团队显示”视图中,我想显示一个选择标签,该标签列出了团队的帖子的所有标签。当用户选择一个标签时,我想重定向它们并列出该标签的所有帖子。我已经开始工作了,但是没有使用我的嵌套资源和我想要的url。我的实现目前看起来像这样
resources :teams do
[...]
get 'tags/:tag', to: "teams#show", as: :tag
end
teams/1?utf8=✓&tag=1
每个团队
可以有多个帖子
,依次可以有多个标签
。在“我的团队显示”视图中,我想显示一个选择标签
,该标签列出了团队的帖子的所有标签。当用户选择一个标签时,我想重定向它们并列出该标签的所有帖子。我已经开始工作了,但是没有使用我的嵌套资源和我想要的url
。我的实现目前看起来像这样(我使用的是HAML
):
这是可行的,但给了我一个如下所示的url:
resources :teams do
[...]
get 'tags/:tag', to: "teams#show", as: :tag
end
teams/1?utf8=✓&tag=1
我想要的是:
teams/1/tags/tag-name
这可能吗?看起来怎么样?尝试在控制器上使用,或类似的东西(与您的字段一起使用)
tag = Tag.where("id = ? OR name = ?", params[:tag], params[:tag])
在select上,您应该使用名称作为值,可能使用这样的gsub
tag.name.gsub(" ", "-")
基于此,您可能能够使其正常工作:
= select_tag "tag",
options_from_collection_for_select(@team_tags,
'id',
'name',
params[:tag]),
{prompt: "All tags",
class: 'chosen-select'},
{onchange: "window.location.replace('/teams/' + @team.id + '/tags/' + this.value);"}
我唯一不确定的是@team.id
是否会正确插入:onchange
,因此您也可以尝试将onchange
行更改为:
onchange: "window.location.replace('/teams/#{@team.id}/tags/' + this.value);"
这是路线问题:谢谢,我认为路线是正确的。在另一个地方,我使用link\u to
将用户重定向到teams/1/tags/tagname
,这很有效。但是我不知道如何使用我的select\u标签
。啊,好的!我的错误:)谢谢,这很有效。正如@rneves answer所说,我使用name作为值,而不是id。