当用户将数据从数据库中提取到屏幕上时,这些数据都很好但看起来很简单,因为它包含括号等,如下所示。
[["100056", "lion bar"]]
[["100055", "milky way"]]
[["100054", "mars bar"]]
这是我的控制器代码
@last_posts = Post.order('created_at DESC').limit(1).pluck(:big_id, :customer)
我的观点目前仅限于此。
<%= @last_posts %><br>
<%= @last_posts_but1 %><br>
<%= @last_posts_but2 %><br>
<%= @last_posts_but3 %><br>
<%= @last_posts_but4 %><br>
<%= @last_posts_but5 %><br>
答案 0 :(得分:6)
Post.order('created_at DESC').limit(1).pluck(:big_id, :customer).flatten
将返回您要找的内容。 flatten
摆脱了嵌套数组。 first
也有效,但您知道您的查询将返回不超过一条记录。对于边缘情况,您不必在flatten
之后进行nil检查,因为在空数组上调用它会返回一个空数组。
此外,select
方法将返回仅填充big_id
和customer
属性的活动记录对象数组,而不是数组数组。
注意:即可。如果您要将限制更改为大于1的任何值,flatten
将无效。
答案 1 :(得分:2)
result = [[["100056", "lion bar"]],
[["100055", "milky way"]],
[["100054", "mars bar"]]]
puts result.map { |x| x.flatten.join(' ') }
# => 100056 lion bar
# => 100055 milky way
# => 100054 mars bar
答案 2 :(得分:1)
总结以上评论:
正如您所能看到的,当您限制使用限制时,您正在尝试检索big_id和客户。与select big_id, customer from posts
类似,它返回一个数组数组。
Pluck直接将数据库结果转换为数组而不构建活动记录对象。
你可以访问@ last_posts.first这些属性,它们提供了[&#34; 100056&#34;,&#34;狮子栏&#34;]
@last_posts.map(:&first) or @last_posts.map{|row| |row0|}