Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails 4选择带有嵌套资源的\u标记_Ruby On Rails_Ruby_Forms_Nested Resources_Html Select - Fatal编程技术网

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。