Передача значения из form_for другому пользователю в Rails - PullRequest
0 голосов
/ 16 сентября 2018

Итак, я хочу добавить в свое приложение функцию, которая позволит вошедшему в систему пользователю (первому пользователю) перейти на страницу других пользователей (второму пользователю) и отправить им сообщение. Я хочу, чтобы это сообщение было сохранено в переменной, связанной со вторым пользователем. В настоящее время, когда первый пользователь отправляет сообщение, оно сохраняется в собственной пользовательской модели, а не передается второму пользователю. Пожалуйста, смотрите мой код ниже:

Контроллер

    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 голосов
/ 16 сентября 2018

Согласно приведенной ниже строке, указанной в сообщении:

В настоящее время, когда первый пользователь отправляет сообщение, оно сохраняется. в рамках своей собственной модели пользователя, а не передаваться второму Пользователь.

Похоже, вы также хотите сохранить сообщения, соответствующие получателю (второму пользователю).

В таком случае измените свою таблицу отзывов, чтобы также указать 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 

Надеюсь, это ответит на вопрос.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...