Обмен сообщениями в Rails 3 - PullRequest
0 голосов
/ 08 августа 2011

Я настраивал систему обмена сообщениями между пользователями, используя это руководство по rails http://www.novawave.net/public/rails_messaging_tutorial.html

Я знаю, что она довольно старая, но у меня действительно не было проблем с настройкой ее работы сейчас.Моя единственная проблема заключается в том, что папка «Входящие» не отображается, и появляется сообщение «Не удалось найти папку без идентификатора». Я не уверен, что мне следует делать.Мой код почти такой же, за исключением некоторых твиков, с кодом в этой ссылке до момента ответа.Вот где я остановился.

Моя модель папки выглядит как

class Folder < ActiveRecord::Base
  acts_as_tree
  belongs_to :user
  has_many :messages, :class_name => "MessageCopy"
end

Мой контроллер почтового ящика выглядит как

class MailboxController < ApplicationController

  def index
    redirect_to new_session_path and return unless signed_in?
    @folder = current_user.inbox
    show
    render :action => "show"
  end

  def show
    @folder ||= current_user.folders.find(params[:id])
    @messages = @folder.messages.paginate :per_page => 10, :page => params[:page], :include       => :message, :order => "messages.created_at DESC"
  end
end

Если необходимо добавить какой-либо другой код, дайте мне знать,

1 Ответ

0 голосов
/ 08 августа 2011

Похоже, что когда вы вызываете show из действия index, @folder не установлен, и поэтому он вызывает current_user.folders.find(params[:id]), но из-за того, как вы его назвали params[:id], равен nil.

Это может вызвать исключение.

Вместо этого я предлагаю изменить действие индекса так:

def index
  redirect_to new_session_path and return unless signed_in?
  @folder = current_user.inbox
  redirect_to :action => :show, :id => @folder.id
end

Вместо рендеринга действия show из действия index, просто перенаправьте в метод show с правильным параметром id.

...