得到了一个非常快速的问题。我还是铁杆新手,并尝试过这两个问题,但它们对我不起作用: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
答案 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