Рубин на рельсах. Кнопка отправки сообщения почтовому ящику

У меня проблемы с тем, чтобы кнопка отправки сообщения работала с гемом почтового ящика. Я использовал это руководство в качестве руководства " http://josephndungu.com/tutorials/private-inbox-system-in-rails-with-mailboxer", где, как и многие другие, вы должны выбрать получателя из списка всех пользователей.

Я хотел бы, чтобы кнопка отправляла сообщение напрямую, без списков, поэтому я сделал кнопку "Отправить пользователю сообщение" на странице, передавая идентификатор пользователя в новую форму разговора.

Сообщение не отправляется, а отображается только в поле отправителя.

вот мой код:

<%= link_to '', new_conversation_path(:recipients_id => @user.id), class: 'send-message-icon' %>

Также попробовал:

<%= link_to '', new_conversation_path(:recipients_id => @user), class: 'send-message-icon' %>

_form: (Правильный идентификатор пользователя отображается в текстовом поле. Позже я удалю текстовое поле)

<%= form_for :conversation, url: :conversations, html: { class: "" } do |f| %>
<div class="form-group">
  <%= f.label :recipients %>
  <%= f.text_field :recipients, :value => params[:recipients_id]%>
</div>
<div class="form-group">
  <%= f.label :subject %>
  <%= f.text_field :subject, placeholder: "Subject", class: "form-control" %>
</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" %>

контроллер:

def create
    recipients = User.where(id: conversation_params[:recipients])
    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

Модель пользователя:

acts_as_messageable
  before_destroy { messages.destroy_all }

Я не могу понять, почему это не работает. Любые предложения будут оценены, спасибо.

1 ответ

Решение

После нескольких часов #$%"#"$%#$@ размышлений, я заработал.

Отправить ссылку на сообщение откуда угодно:

<%= link_to '', new_conversation_path(:recipient_id => @user.id), class: 'send-message-icon' %>

_form:

<%= form_for :conversation, url: :conversations, html: { class: "" } do |f| %>
<div class="form-group">
  <%= f.label :recipients %>
  <%= hidden_field_tag(:recipient_id, "#{@user.id}") %></div>
<div class="form-group">
  <%= f.label :subject %>
  <%= f.text_field :subject, placeholder: "Subject", class: "form-control" %>
</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 %>

контроллер:

def new
    @user = User.find_by(id: params[:recipient_id])
  end

   def create
    recipients = User.find_by(id: params[:recipient_id])
    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
Другие вопросы по тегам