Невозможно отобразить поля связанной модели - PullRequest
0 голосов
/ 29 декабря 2010

Привет всем, у меня довольно странная проблема, и мне трудно определить причину.Я чувствую, что это простое решение, но я надеялся на толчок в правильном направлении.У меня есть следующие модели:

class User < ActiveRecord::Base
has_many :pnotes  

class Pnote < ActiveRecord::Base
belongs_to :preport
belongs_to :user  

class Preport < ActiveRecord::Base
has_many :pnotes, :dependent=>:destroy

Часть Pnote моей схемы выглядит так:

create_table "pnotes", :force => true do |t|
    t.integer  "preport_id"
    t.integer  "user_id"
    t.text     "content"
    t.datetime "created_at"
    t.datetime "updated_at"
end

Я пытаюсь отобразить все Pnotes, связанные с данным Preport настраница шоу Preport

Мой контроллер Preport имеет следующий код для действия show:

def show
    @board = Board.find(params[:board_id])
    @preport = @board.preport
    @pnotes = @preport.pnotes
    @pnote=@preport.pnotes.build

    respond_to do |format|
      format.html # show.html.erb
      format.xml  { render :xml => @preport }
    end
  end

Так что теперь в моем show.html.erb в папке Preports я пытаюсьдля отображения списка Pnotes как такового:

<ul>
<% @pnotes.each do |pnote| %>
 <li><%= pnote.user.login %><span>-<%=pnote.content %></span></li>
<% end %>
</ul>

"login" - это стандартное поле, которое поставляется вместе с Gem аутентификации Devise.

Однако, это дает мне следующую ошибку:

неопределенный метод `login 'для nil: NilClass

Если я изменю представление на это:

<% = pnote.user%> - <% =pnote.content%>

Я получаю:

#<User:0x106c25888>-Testing

, поэтому кажется, что он идентифицирует ассоциированного пользователя, но не может получить его атрибуты.

Любой совет будет принята с благодарностью!Я чувствую, что здесь происходит довольно небольшой надзор, но я не могу точно отличить, где

Спасибо!

1 Ответ

1 голос
/ 29 декабря 2010

Если вы не используете очень старую версию Devise, о которой я не знаю, модель User не будет иметь атрибута login.

Вместо email.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...