#ruby-on-rails
#ruby-on-rails
Вопрос:
Я работаю над этим уроком Blogger http://tutorials.jumpstartlab.com/projects/blogger.html#i3:-tagging
и я продолжаю получать ошибку «сравнение времени с нулевым результатом», когда я добавляю
<p>Posted <%=distance_of_time_in_words(comment.article.created_at, comment.created_at) %> later<p>
к частичному моему комментарию (_comments.html.erb)
Вот моя схема
ActiveRecord::Schema.define(version: 20140618233420) do
create_table "articles", force: true do |t|
t.string "title"
t.string "body"
t.datetime "created_at"
t.datetime "updated_at"
end
create_table "comments", force: true do |t|
t.string "author_name"
t.text "body"
t.integer "article_id"
t.datetime "created_at"
t.datetime "updated_at"
end
add_index "comments", ["article_id"], name: "index_comments_on_article_id"
end
Может кто-нибудь объяснить? Мой сервер rails указывает, что и комментарии, и статьи имеют временные метки, так как же они отображаются как nil?
Вот полный код в моем файле _comment.html.erb
<div>
<h4>Comment by <%= comment.author_name %></h4>
<p class="comment"><%= comment.body %></p>
<p>Posted <%=distance_of_time_in_words(comment.article.created_at, comment.created_at) %> later<p>
</div>
Вот мой код контроллера:
class CommentsController < ApplicationController
def create
@comment = Comment.new(comment_params)
@comment.article_id = params[:article_id]
@comment.save
redirect_to article_path(@comment.article)
end
def comment_params
params.require(:comment).permit(:author_name, :body)
end
end
Комментарии:
1. Как вы используете
comment
в коде? Являетсяcomment
переменной экземпляраComment
.Пожалуйста, опубликуйте полный код вашего_comments.html.erb
2. Спасибо… Я только что опубликовал это выше.
3. Является ли comment.article нулевым за шанс?
4. возможно, вы можете использовать t.timestamps вместо 2 объявлений t.datetime в миграциях. Найдите метки времени на странице, на которую вы ссылались здесь.
5. Если вы откроете свой
rails console
и выполните:Comment.last.article_id
— работает ли это?
Ответ №1:
Убедитесь, что это включено в ваш код:
<%= render partial: 'articles/comment', collection: @article.comments %>
/models/comment.rb
class Comment < ActiveRecord::Base
belongs_to :article
end
Комментарии:
1. У меня есть все это, и это работает — форма комментариев отображается, если я удаляю строку distance_of_time_in_words.