从活动记录中删除括号和引号

时间:2014-05-05 15:39:27

标签: ruby-on-rails ruby activerecord

当用户将数据从数据库中提取到屏幕上时,这些数据都很好但看起来很简单,因为它包含括号等,如下所示。

[["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>

3 个答案:

答案 0 :(得分:6)

Post.order('created_at DESC').limit(1).pluck(:big_id, :customer).flatten

将返回您要找的内容。 flatten摆脱了嵌套数组。 first也有效,但您知道您的查询将返回不超过一条记录。对于边缘情况,您不必在flatten之后进行nil检查,因为在空数组上调用它会返回一个空数组。

此外,select方法将返回仅填充big_idcustomer属性的活动记录对象数组,而不是数组数组。

注意:即可。如果您要将限制更改为大于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|}