从导轨中取出字符串以显示n

时间:2017-08-17 00:48:12

标签: ruby-on-rails ruby-on-rails-4 ruby-on-rails-5

得到了一个非常快速的问题。我还是铁杆新手,并尝试过这两个问题,但它们对我不起作用:Why does Array.to_s return brackets?ruby 1.9 how to convert array to string without brackets

我正在尝试显示最后一条消息以及它在我的聊天室应用程序中发送的日期。我能够使用此代码获得结果,但它周围有括号,我希望删除这些括号。这里的任何帮助都会很棒,我也附上了截图。非常感谢你!

Show.html.erb

For the Date: <%= chatroom.messages.last(1).pluck(:created_at) %> For the Last Message in Chatroom: <%= chatroom.messages.last(1).pluck(:body) %>

DirectMessages控制器

class DirectMessagesController < ApplicationController
before_action :authenticate_user!

def show
    users = [current_user, User.find(params[:id])]
    @messageduser = User.find(params[:id])
    @chatroom = Chatroom.direct_message_for_users(users)        
    @chatroomall = current_user.chatrooms
    @messages = @chatroom.messages.order(created_at: :desc).limit(100).reverse
    @messagelast = @chatroom.messages.last(1)
    last_message = @chatroom.messages.last
    render "chatrooms/show"
end
private

def chatroomuserlocator
    @chatroomlocator = Chatroom.find(params[:chatroom_id])
end
end

enter image description here

3 个答案:

答案 0 :(得分:1)

如果您不太担心内存使用情况,可以获取整个对象并只访问所需的字段。

<%= chatroom.messages.last.created_at %>
<%= chatroom.messages.last.body %>

答案 1 :(得分:1)

试试这个:

<%= chatroom.messages.last.created_at %>

而且:

<%= chatroom.messages.last.body %>

请记住,pluck会返回一个数组,以便解释您的括号。

我不认为您需要pluck,因为您只是访问单个项目的属性。

答案 2 :(得分:1)

您可以将查找分配给某个值,因此它不会运行两次:

Android SDK Tools : 26.0.2 Node : v6.10.1 OS : macOS Sierra Xcode : Xcode 8.3 Build version 8E162 ios-deploy : 1.8.1 ios-sim : 5.0.6 npm : 3.10.3

然后您可以有效地访问属性:

last_message = chatroom.messages.last

如果您对限制属性或last_message感兴趣,请使用select

last_message.created_at last_message.body

全部放在一起:

last_message = chatroom.messages.select(:created_at, :body).last