NoMethodError at /coders
undefined method `time_counter' for #<Coder:0x007f8d5def4a88>
views/coders/index.html.erb
<% @coders.each do |coder| %>
<div class="post_item">
<%= image_tag coder.cover_image, class:"cover_image_index" %>
<div class="index_title"><%= sanitize coder.title %></div>
<div class="index_description"><%= sanitize coder.description %></div>
<div class="index_date">PUBLISHED ON <%= coder.created_at %>
<span class="reading_time"><%= "#{ time_counter(coder) }" %></span>
</div>
</div>
<% end %>
controllers/coders_controller.rb
class CodersController < ApplicationController
helper_method :time_counter, :words_per_minute
def index
@coders = Coder.all
end
end
app/helpers/coders_helper.rb
module CodersHelper
def time_counter(coder)
words_per_minute = 200
time = (coder.content.split.count / words_per_minute)
case
when time <= 1 then "READ IN 1 MIN"
when time > 1 then "READ IN #{coder.content.split.count / words_per_minute} MIN"
end
end
end
coder.rb
class Coder < ActiveRecord::Base
has_attached_file :cover_image, :styles => { :medium => "300x300>", :thumb => "100x100>" }, :default_url => "/images/:style/missing.png"
validates_attachment_content_type :cover_image, :content_type => /\Aimage\/.*\Z/
end
schema.rb
create_table "coders", force: true do |t|
t.string "title"
t.text "content"
t.datetime "created_at"
t.datetime "updated_at"
t.string "description"
t.string "cover_image_file_name"
t.string "cover_image_content_type"
t.integer "cover_image_file_size"
t.datetime "cover_image_updated_at"
end