Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.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 Ruby on Rails Collect返回封闭数组(变量:未定义的方法`model_name';for array:Class)_Ruby On Rails_Ruby_Arraycollection - Fatal编程技术网

Ruby on rails Ruby on Rails Collect返回封闭数组(变量:未定义的方法`model_name';for array:Class)

Ruby on rails Ruby on Rails Collect返回封闭数组(变量:未定义的方法`model_name';for array:Class),ruby-on-rails,ruby,arraycollection,Ruby On Rails,Ruby,Arraycollection,我有一个控制器返回我网站上的所有文章 @articles = Article.find(all) 以及用于呈现@articles数组的分部 我已将控制器更改为: @articles = User.find(1).topics.map { |t| t.articles } 所以我也可以返回一些其他数据 在Rails控制台上检查之后,我发现问题在于collect的输出数组与Article.find(all)不匹配 查找的输出数组(全部) 我的索引 <%= render :partial

我有一个控制器返回我网站上的所有文章

 @articles = Article.find(all)
以及用于呈现@articles数组的分部

我已将控制器更改为:

@articles = User.find(1).topics.map { |t| t.articles }
所以我也可以返回一些其他数据

在Rails控制台上检查之后,我发现问题在于collect的输出数组与Article.find(all)不匹配

查找的输出数组(全部)

我的索引

<%= render :partial => @articles%> 
@articles%>
然后是帕西亚尔:

<%= link_to_unless_current h(article.title), article %> <%= h(article.body) %>


有人知道如何克服数组的双括号[[]]的问题吗?

首先,对于第一行,我认为您的打字错误应该是
:all
,而不是
all
:D

t.articles
返回文章集合

因此,
map{| t | t.articles}
为您提供了文章集合的集合(数组的数组)

你可以试试这个:

@articles = User.find(1).topics.map { |t| t.articles }.flatten.uniq
# uniq if an article could belongs to two or more topics. Otherwise it is not needed.

:全部
而不是全部…有问题吗。。?
<%= render :partial => @articles%> 
<%= link_to_unless_current h(article.title), article %> <%= h(article.body) %>
@articles = User.find(1).topics.map { |t| t.articles }.flatten.uniq
# uniq if an article could belongs to two or more topics. Otherwise it is not needed.