Неопределенный метод RoR 'to_datetime' в зависимости от порядка вспомогательных методов

Я испытываю очень странную проблему; я получаю эту ошибку

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

когда render 'modal' стоит перед render 'post' в show.html.erb, но не после:

<div class="page-header">
    <h2>Indlæg af <%= @user.first_name %></h2>
</div>

<% if current_user == @user %>
    <%= render 'modal' %>
<% end %>
<%= render 'post' %>

Я приложил взгляды в суть ниже:

Суть: https://gist.github.com/czepluch/8166841

Для меня не имеет смысла, что эта ошибка возникает в зависимости от порядка размещения рендеров. Поэтому мне действительно хотелось бы знать, почему порядок рендеринга хелперов имеет значение?


person Jacob Czepluch    schedule 29.12.2013    source источник
comment
Вместо ссылки на суть, пожалуйста, разместите соответствующий код здесь. Нам не понадобится все это, только те части, которые иллюстрируют вашу проблему.   -  person Michael Berkowski    schedule 29.12.2013
comment
И это включает в себя код вашего контроллера, а не только представления   -  person RustyToms    schedule 29.12.2013
comment
Кроме того, немного трассировки стека было бы полезно определить, в каком из ваших драгоценных камней это происходит. Я думаю, что отследил это, но хочу убедиться.   -  person tdooner    schedule 29.12.2013
comment
Вопросы, касающиеся проблем с написанным вами кодом, должны описывать конкретную проблему — и включать действительный код для ее воспроизведения — в самом вопросе. См. инструкции на SSCCE.org.   -  person the Tin Man    schedule 29.12.2013


Ответы (1)


Пожалуйста, добавьте код к вопросу, чтобы он был сохранен с ответами здесь. Я подозреваю, что это связано с тем, что ваша форма имеет это:

simple_form_for([@user, @user.posts.build]

Это означает, что создается новый пост, который не имеет атрибутов, что впоследствии может привести к нулевой ошибке. измените порядок, и это не будет построено до тех пор, пока не будет запущен другой код. Единственное, что я вижу на первый взгляд, связанное с датой и временем:

time_ago_in_words(p.created_at)

Если created_at равен нулю из-за пустого сообщения, это может привести к ошибке.

Поиграйте с объявлением формы, возможно, вы сможете сделать

simple_form_for([@user, :post])

или что-то в этом роде, чтобы получить форму для нового сообщения без фактического прикрепления пустого объекта к объекту @user.

person DGM    schedule 29.12.2013