Как создавать разговоры со страницы показа пользователя с помощью почтового ящика? - PullRequest
0 голосов
/ 05 декабря 2018

Я следую определенному руководству по созданию системы обмена сообщениями пользователь-пользователь с использованием почтового ящика.

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

Любая идея или предложение?Или, может быть, есть способ, которым я могу установить значение по умолчанию params[:id] для выбора ниже?

<%= form_for :conversation, url: :conversations, html: { class: "" } do |f| %>
  <div class="form-group">
    <%= f.label :recipients %>
    <p id="recipient-select"><%= f.select(:recipients, @users.all.collect {|p| [ p.username, p.id ] }, {}, { multiple: true}) %></p>       
  </div> 
  <div class="form-group">
    <%= f.label :subject %>
    <%= f.text_field :subject, placeholder: "Subject", class: "form-control", :required => true %>
  </div>
  <div class="form-group">
    <%= f.label :message %>
    <%= f.text_area :body, class: 'form-control',placeholder: "Type your message here", rows: 4  %>
  </div>
  <%= f.submit "Send Message", class: "btn btn-success" %>
<% end %>

Контроллер разговоров

class ConversationsController < ApplicationController
  before_action :authenticate_user!

  def create
    recipients = User.where(id: conversation_params[:recipients])
    recipients.each do |recipient|
      if recipient != current_user
        @recipient = recipient
      end
    end
    conversation = current_user.send_message(recipients, conversation_params[:body], conversation_params[:subject]).conversation
    flash[:success] = "Your message was successfully sent!"
    redirect_to conversation_path(conversation)
  end

  def show
    @receipts = conversation.receipts_for(current_user)
    conversation.mark_as_read(current_user)
  end

  def reply
    current_user.reply_to_conversation(conversation, message_params[:body])
    flash[:notice] = "Your reply message was successfully sent!"
    redirect_to conversation_path(conversation)
  end

  private

  def message_params
    params.require(:message).permit(:body, :subject)
  end

  def conversation_params
    params.require(:conversation).permit(:subject, :body,recipients:[])
  end

end
...