尝试将消息从一个用户发送到另一个用户时,我一直遇到问题。
has_many :sent_messages, class_name: "Message" , foreign_key: :sender_id
has_many :received_messages, class_name: "Message", foreign_key: :receiver_id
def friendships
Friendship.where("sender_id = ? or receiver_id = ? and status = ?", self.id, self.id, "accepted")
end
def friends
ids = friendships.pluck(:sender_id, :receiver_id).flatten.uniq
ids.delete(self.id)
friends = User.where(id: ids)
end
<% current_user.friends.map do |f| %>
<strong><%= link_to "#{f.name}", conversation_path(f.id) %></strong><p></p>
<% end %>
<% @test.map do |c| %>
<%= c.sender.name %>:
<%= c.message %><p></p>
<% end %>
<%= form_for Message.new do |f| %>
<%= f.text_field :message %>
<%= f.submit %>
<% end %>
class ConversationsController < ApplicationController
def show
#current user
#other use in conversation
@other_user = User.find(params[:id])
@test = Message.where("sender_id IN (#{current_user.id},#{@other_user.id}) AND receiver_id IN (#{current_user.id}, #{@other_user.id})")
end
end
class MessagesController < ApplicationController
def index
@message = current_user.friends
end
def create
@message = Message.new(params[:message].permit!)
@message.sender_id = current_user.id
@message.receiver_id = User.find(params[:id])
if @message.save
redirect_to :root
end
end
end
当我在对话节目视图中使用form_for时,我得到“找不到没有ID的用户”错误,虽然我觉得它应该为它们提供两个用户的ID?
答案 0 :(得分:1)
问题出在这一行:
@message.receiver_id = User.find(params[:id])
params[:id]
是nil
。您必须以以下格式发送id
:
<%= form_for Message.new do |f| %>
<%= f.text_field :message %>
<%= f.hidden_field :id, :value => the_user_id_goes_here %>
<%= f.submit %>
<% end %>