因此,我想在我的应用程序中添加一个功能,该功能允许已登录的用户(第一个用户)转到另一个用户页面(第二个用户)并向他们发送消息。我希望将此消息保存到与第二个用户关联的变量。当前,当第一个用户发送消息时,它被保存在自己的用户模型中,而不是传递给第二个用户。请在下面查看我的代码:
控制器
def create
@feedback = current_user.feedbacks.create(feedback_params)
#@sender = @feedback.sender
@receiver = @feedback.receiver
if @feedback.save!
flash[:success] = "Feedback sent!"
redirect_to root_url
else
render 'new'
end
end
def new
@feedback = Feedback.new
@feedback_receiver= @feedback.receiver
end
def view
end
def destroy
end
def index
end
private
def feedback_params
params.require(:feedback).permit(:content, :receiver_id, :user_id)
end
end
Form_for
<% provide(:title, "Give feedback") %>
<h1> Give feedback </h1>
<div class="row">
<div class= "col-md-6 col-md-offset-3">
<%= form_for(@feedback) do |f| %>
<%= render 'shared/error_messages', object: f.object %>
<div class="field">
<%= f.text_area :content, placeholder: "How can I improve myself?", object: f.object %>
<%= f.hidden_field(:receiver_id, @feedback.receiver_id) %>
</div>
<%= f.submit "Submit", class: "btn btn-primary" %>
<% end %>
答案 0 :(得分:0)
按照下面引用的行中引用:
当前,当第一个用户发送消息时,它正在被保存 在自己的用户模型中,而不是传递给第二个 用户。
似乎您也想存储与收件人(第二用户)相对应的消息。
在这种情况下,请将您的反馈表修改为也具有sender_id。当前,您只有user_id(假设基于current_user.feedbacks.build行)
因此,user.rb中将有两个与反馈的关联。
has_many :feebacks_sent, class_name: "Feedback", foreign_key: :sender_id
has_many :feedbacks_recieved, class_name: "Feedback", foreign_key: :reciever_id
因此,现在,当first_user将消息发送给second_user时,反馈表将具有以下条目,这些条目与根据应用程序要求的条目不同:
reciever_id: "One to which the message is being sent"
sender_id: "One who is sending the message"
message: "Text which is being sent"
还需要修改反馈参数,因为现在您需要允许它作为receive_id
def feedback_params
params.require(:feedback).permit(:content,:receiver_id)
end
希望它能回答问题。