Sadece tümleşik Posta Kutusu ve bir sorunla karşılaşıyorum. Yeni bir ileti gönderdiğimde mailboxer_notifications
tablosundaki sender_id
, gönderenin kimliği yerine her zaman sıfırdır.Rails gem 'Mailboxer' kullanarak ve sender_id her zaman sıfırdır
Kullanıcı adları için friendly_id gem kullanıyorum ve bu sorunun nerede olduğunu düşünüyorum ama nasıl düzeltileceğini öğrenemiyorum (sorun olsa bile).
mesajlar/new.html.erb
<% provide(:title, "New Message") %>
<%= form_tag user_messages_path, method: :post do %>
<div class="form-group">
<%= label_tag 'message[subject]', 'Subject' %>
<%= text_field_tag 'message[subject]', nil, class: 'form-control', required: true %>
</div>
<div class="form-group">
<%= label_tag 'message[body]', 'Message' %>
<%= text_area_tag 'message[body]', nil, cols: 3, class: 'form-control', required: true %>
</div>
<div class="form-group">
<%= label_tag 'recipients', 'Choose recipients' %>
<%= select_tag 'recipients', recipients_options(@chosen_recipient), multiple: true, class: 'form-control chosen-it' %>
</div>
<%= submit_tag 'Send', class: 'btn btn-primary' %>
<% end %>
messages_controller.rb taş entegre olduğunda çoğunlukla this tutorial takip
resources :users do
resources :conversations, only: [:index, :show, :destroy] do
member do
post :reply
post :restore
delete :empty_trash
post :mark_as_read
end
end
resources :messages, only: [:new, :create]
end
class MessagesController < ApplicationController
before_action :authenticate_user
def new
@user = current_user
@chosen_recipient = User.find_by(id: params[:to].to_i) if params[:to]
end
def create
@user = current_user
recipients = User.where(id: params['recipients'])
conversation = current_user.send_message(recipients, params[:message][:body], params[:message][:subject]).conversation
flash[:success] = "Message has been sent!"
redirect_to user_conversation_path(@user, conversation)
end
private
def authenticate_user
unless ((current_user.id = params[:user_id]) unless current_user.nil?)
flash[:error] = 'Looks like your not supposed to be there'
redirect_to login_path
end
end
end
routes.rb. Yeni bir mesaj gönderdiklerinde kullanıcı kimliğini neden doğru kaydetmediğinin hiçbir fikrim yok.
güncelleme sebebi friendly_id o yüzden mesela url dostu kimliği kullanmadığınızda çünkü sender_id
0 olarak kaydetmek neden olduğunu sanıyorum kullanıcı/1/mesajlar/yeni işe yaramaz ama kullanıcı/kullanıcı-kullanıcı/mesajlar/yeni mesaj oluştururken kullanıcı kimliğini kaydetmiyor
Teşekkürler == 'yardımcı oldu, ancak şimdi hata alıyorum' Posta Kutusu bulunamadı :: '' İleti '= 2 [WHERE "mailboxer_notifications" ile ileti dizisi. "Type" =' Mailboxer :: Message 'AND " mailboxer_receipts "." receiver_id "=? VE "mailboxer_receipts". "Receiver_type" =?] 'Mesaj gönderdiğimde – Rob