将值从form_for传递给Rails中的另一个用户

时间:2018-09-16 18:52:52

标签: ruby-on-rails ruby

因此,我想在我的应用程序中添加一个功能,该功能允许已登录的用户(第一个用户)转到另一个用户页面(第二个用户)并向他们发送消息。我希望将此消息保存到与第二个用户关联的变量。当前,当第一个用户发送消息时,它被保存在自己的用户模型中,而不是传递给第二个用户。请在下面查看我的代码:

控制器

    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 %>

1 个答案:

答案 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 

希望它能回答问题。

相关问题