-2
コメントが公開されたとき、私は日付を表示しています:未定義のメソッド `strftimeの」:NilClass - コメント日
<%= comment.created_at.strftime("%d %b %Y") %>
これは、コメントが正しく記入されていない、と提出された場合を除き、動作します。これが発生した場合、私はエラーが発生します:undefined method
strftime 'for nil:NilClass`は私のコメントの検証ではなく。
これを修正するにはどうすればよいですか?私はあなたが適切にローカル変数コメントを埋めていないと思います
class CommentsController < ApplicationController
def create
@post = Post.friendly.find(params[:post_id])
@comment = @post.comments.create(params[:comment].permit(:name, `:email, :website, :body, :url))`
if @comment.errors.any?
render "posts/show"
else
redirect_to post_path(@post)
end
end
def destroy
@post = Post.friendly.find(params[:post_id])
@comment = @post.comments.find(params[:id])
@comment.destroy
redirect_to post_path(@post)
end
end
class Comment < ActiveRecord::Base
belongs_to :post
validates_format_of :email, :with => /@/
validates :name, presence: true, length: { minimum: 5}
validates :body, presence: true, length: { minimum: 5}
validates :body, presence: true, length: { minimum: 5}
def gravatar_url
stripped_email = email.strip
downcased_email = stripped_email.downcase
hash = Digest::MD5.hexdigest(downcased_email)
default_url = "https://s3-us-west-2.amazonaws.com/mirror-communications/assets/download.jpg"
"http://gravatar.com/avatar/#{hash}"
end
end
<!-- Post Comments Partial -->
<li>
<article class="comment">
<div class="user-avatar">
<%= image_tag comment.gravatar_url %>
</div>
<div class="comment-content">
<h5 class="name"><%= comment.name %></h5>
<div class="comment-meta comment-reply">
<span class="post-date"><%= comment.created_at.strftime("%d %b %Y") %></span>/<span class="comment-reply-link"><%= link_to comment.website.try(:remove, /.*\/\//), url_for(comment.website), target: '_blank', class: "comment-reply" %></span>
</div>
<p><%= comment.body %></p>
</div>
</article>
<!-- Form Partial -->
<%= form_for([@post, @post.comments.build]) do |f| %>
<% if @comment && @comment.errors.any? %>
<div id="error_explanation" class="alert alert-danger alert-dismissable">
<button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button>
<h2><%= pluralize(@comment.errors.count, "error") %> Your comment could not be submitted:</h2>
<ul>
<% @comment.errors.full_messages.each do |message| %>
<li><%= message %></li>
<% end %>
</ul>
</div>
<form class="comment-form">
<div class="row">
<div class="column width-4">
<%= f.text_field :name, class: "form-name form-element", placeholder: "Name*", :tabindex => 1 %>
</div>
<div class="column width-4">
<%= f.email_field :email, class: "form-email form-element", placeholder: "Email* (not displayed)", :tabindex => 3 %>
</div>
<div class="column width-4">
<%= f.url_field :website, class: "form-website form-element", placeholder: "Website", :tabindex => 4 %>
</div>
</div>
<div class="row">
<div class="column width-12">
<%= f.text_area :body, class: "form-message form-element", placeholder: "Message*", :tabindex => 5 %>
<%= f.submit class: "form-submit button medium bkg-black bkg-hover-turquoise color-white color-hover-white no-margin-bottom" %>
</div>
</div>
</form>
</div>
<% end %>
<!-- Posts Show -->`
<div class="post-comments">
<h3 class="comments-title">
<% if @post.comments.count < 2 %>
<%= @post.comments.count %> Comment</h3>
<% else %>
<%= @post.comments.count %> Comments</h3>
<% end %>
<div class="comments">
<ul class="comment-list">
<%= render @post.comments %>
</ul>
</div>
</div>
「コメントが正しく提出されずに提出されました」について詳しく説明できますか?これらのコメントはどのように作成されますか?彼らはあなたのデータベースにどのように残っていますか? – kiddorails
comment.created_at.presentの場合は、comment.created_at.strftime( "%d%b%Y")を試してください。 – Navin
@bgilbank、コメントが正しく作成されなかったときのコンテキストを説明できますか?コメントのバリデーションが合格すると、コメントレコードの 'created_at'と' updated_at'フィールドが自動的に読み込まれます。すなわち、コメントが存在する場合、 'created_at'フィールドを表示することができます。 'comment'は' nil'です。なぜその無しを見つけることを試みなさい。 –