我有一个控制器正在返回我网站的所有文章
@articles = Article.find(all)
和用于渲染@articles数组的部分。
我已将控制器更改为:
@articles = User.find(1).topics.map { |t| t.articles }
所以我也可以返回其他一些数据
在Rails控制台上检查后,我发现问题是collect的输出数组与Article.find(all)不匹配
find(all)的输出数组
[#<Article id: 1, user_id: 2, title: "test">]
收集
的输出数组[[#<Article id: 1, user_id: 2, title: "test">]]
当我试图渲染parcial时,我得到:
variable:undefined method `model_name' for Array:Class
我的索引
<%= render :partial => @articles%>
然后是parcial:
<%= link_to_unless_current h(article.title), article %> <%= h(article.body) %>
有谁知道如何用数组的双括号[[]]克服这个问题?
答案 0 :(得分:1)
首先,对于第一行,我认为你的拼写错误应该是: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.