проблемы с использованием частичного от другого контроллера - PullRequest
3 голосов
/ 23 августа 2011

Я сейчас работаю над Rails 2.3.5. У меня есть модель Blog и Blog has_many комментарии. В моем комментарии для отображения комментария

            views/comments/_comment.html.erb
    <li class="depth-1">
        <div class="comment-info">
            <cite>
              <a href="index.html"><%= comment.user.name %></a> Says: <br>
              <span class="comment-data"><a title="" href="#"><%=  comment.created_at.stftime('%B %d, %Y  at %I:%M %p')%></a></span>
            </cite>
        </div>

        <div class="comment-text">
            <p><%= comment.content %></p>

            <div class="reply">
              <a href="index.html" class="comment-reply-link" rel="nofollow">Comment</a>
            </div>
        </div>
    </li>

эта часть вызывается как из blogs / show.html.erb, так и comments / create.rjs. Частичное вызывается из представления шоу как таковое

    <%= render :partial=>'comments/comment', @collection => @blog.comments %>

но когда я получаю доступ к своей ссылке localhost: 3000 / blogs / 6, я получаю следующую ошибку

    NoMethodError in Blogs#show
    Showing app/views/comments/_comment.html.erb where line #6 raised:
    undefined method `name' for nil:NilClass
    Extracted source (around line #6):

    3: 
    4:   <div class="comment-info">
    5:     <cite>
    6:       <a href="index.html"><%= comment.user.name %></a> Says: <br>
    7:       <span class="comment-data"><a title="" href="#comment-63"><%=  comment.created_at.stftime('%B %d, %Y  at %I:%M %p')%></a></span>
    8:     </cite>
    9:   </div>

    Trace of template inclusion: app/views/blogs/show.html.erb

но атрибут пользователя хорошо определен и имя существует для всех пользователей.

1 Ответ

2 голосов
/ 23 августа 2011

Вы ввели @ вместо двоеточия : в своей части, проверьте документацию Partials .

Правильный формат:

<%= render :partial=>'comments/comment', :collection => @blog.comments %>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...