Ive пыталась создать систему обмена сообщениями для моего сайта, которая использует устройство для аутентификации. Необходимая функциональность должна состоять в том, чтобы отправлять сообщение одному или нескольким получателям (предпочтительно с формой контрольного списка с указанием пользователей). После некоторого времени поиска я нашел пару драгоценных камней, таких как почтовый ящик, но мне не нужны все его функции и я хотел создать свою собственную систему для обучения (все еще новичок в рельсах).Создание системы обмена сообщениями с нуля с несколькими получателями в рельсах 4
Я следовал этому древнему учебнику (http://web.archive.org/web/20100823114059/http://www.novawave.net/public/rails_messaging_tutorial.html). Я понимаю, что это очень старый учебник, но это единственный, который я смог найти, который соответствовал тому, чего я пытался достичь.
Я следил за учебником до Т и даже копировал и вставлял код из учебника после того, как мой код не работал.
при попытке доступа http://localhost:3000/mailbox я получаю NoMethodError в MailboxController # индекс
undefined method `messages' for nil:NilClass
app/controllers/mailbox_controller.rb:12:in `show'
app/controllers/mailbox_controller.rb:6:in `index'
Я также ссылается на этот вопрос Rails 3: undefined method messages for Folder который имел такую же ошибку, как и я, но эта тема просто казалось, не идти не куда.
mailbox_controller.rb
class MailboxController < ApplicationController
def index
@folder = current_user.inbox
show
render :action => "show"
end
def show
@folder ||= current_user.folders.find_by(params[:id])
@messages = @folder.messages :include => :message, :order => "messages.created_at DESC"
end
end
модели/folder.rb
class Folder < ActiveRecord::Base
acts_as_tree
belongs_to :user
has_many :messages, :class_name => "MessageCopy"
end
Любая помощь с этим было бы удивительным, а также просто дайте мне знать, если вам нужно больше информации и разместить его.
'@ folder' - это нуль. Об этом сообщает сообщение об ошибке. Всегда ли это определено правильно. Вы уверены, что 'current_user.inbox' что-то возвращает? – ptd
Я думаю, что это 'current_user.folders.find_by (params [: id])', который возвращает 'nil' в соответствии с сообщением об ошибке. Я предлагаю перейти на '@folder || = current_user.folders.find_by! (: Id => params [: id])', чтобы сделать поиск по id явным, и для него повысить полезную ошибку (по крайней мере, прямо сейчас) когда ничего не найдено –
Спасибо за быстрый ответ, когда я заменяю current_user.folders.find_by (params [: id] с @folder || = current_user.folders.find_by! (: id => params [: id]), если get сообщение об ошибке «Не удалось найти папку с папками [WHERE]». user_id «=? AND« folders ».« id «IS NULL] –