Я использую гем почтового ящика для создания системы обмена сообщениями между пользователями для моего приложения rails.По какой-то причине я получаю эту ошибку:
(неопределенный метод 'receivets_for' для nil: NilClass)
Может быть, это потому, что я должен определить 'receivets_for' где-нибудь в моем контроллере или вmailboxer.rb?Я попробовал несколько вещей ... но, к сожалению, ни одна из них не увенчалась успехом.
Это мои маршруты.rb:
Rails.application.routes.draw do
root 'static_pages#home'
get '/help', to: 'static_pages#help'
get '/about', to: 'static_pages#about'
get '/contact', to: 'static_pages#contact'
get '/signup', to: 'users#new'
get '/login', to: 'sessions#new'
get 'search/index'
post '/login', to: 'sessions#create'
delete '/logout', to: 'sessions#destroy'
resources :users do
member do
get :following, :followers
end
end
resources :conversations do
resources :messages
end
resources :account_activations, only: [:edit]
resources :password_resets, only: [:new, :create, :edit, :update]
resources :microposts, only: [:create, :destroy]
resources :relationships, only: [:create, :destroy]
resources :searches
end
Это мой контроллер разговоров:
class ConversationsController < ApplicationController
def show
@conversation = current_user.mailbox.conversation.find(params[:id])
end
def new
@recipients = User.find(params[:user_id])
end
def create
recipient = User.find(params[:user_id])
receipt = current_user.send_message(recipient, params[:body])
redirect_to conversation_path(receipt.conversation)
end
end
Это мой контроллер сообщений:
class MessagesController < ApplicationController
before_action :set_conversation
def create
receipt = current_user.send_message(@conversation, body)
redirect_to receipt.conversation
end
private
def set_conversation
@conversation = current_user.mailbox.conversations.find(params[:conversation_id])
end
end
Система обмена сообщениями, которую я создаю точно, представляет собой систему обмена сообщениями, где «current_user» может перейти на страницу профиля любого пользователя в приложении и отправить ему сообщениечерез страницу профиля.Таким образом, это означает, что я отображаю show.html.erb модели диалога внутри show.html.erb моей модели пользователей.Вот код обоих представлений:
show.html.erb - Модель пользователя:
<% provide(:title, @user.name) %>
<div class="row">
<aside class="col-md-4">
<section>
<h1>
<%= gravatar_for @user %>
<%= @user.name %>
</h1>
</section>
<section class="stats">
<%= render 'shared/stats' %>
</section>
<h6>
<%= @user.gender %>
</h6>
<%= render "conversations/conversation" %>
</aside>
<div class="col-md-8">
<%= render 'follow_form' if logged_in? %>
<% if @user.microposts.any? %>
<h3>Microposts (<%= @user.microposts.count %>)</h3>
<ol class="microposts">
<%= render @microposts %>
</ol>
<%= will_paginate @microposts %>
<% end %>
</div>
</div>
_conversation.html.erb - показать представление модели разговоров.
<% @conversation.receipts_for(current_user).each do |receipt| %>
<div>
<%= receipt.message.body %>
</div>
<% end %>
<%= form_tag conversation_messages_path(@conversation), method: post do %>
<div>
<%= text_area_tag :body %>
</div>
<%= submit_tag %>
<% end %>
Итак, как именно я могу определить метод receivets_for для своего почтового ящика?Или что-то еще не так с моим кодом?
Любая помощь будет высоко ценится!
Спасибо!