2015-02-11 89 views
0

我正在创建一个简单的工作板,并希望显示该格式的创建日期 - '发布于:2015年2月11日'如何显示发布日期?

我想在两个地方显示它,在我的索引(index.html.erb)与岗位和个别帖子页(show.html.erb)

我当前的代码如下:

index.html.erb -

<p><%= link_to "Add a Position", new_job_path %></p> 

    <% @jobs.each do |job| %> 
     <div class="job"> 
      <%= link_to job.position, job %> 
      <br><br> 
      <ul class="entry_list"> 
       <li>Company: <%= job.company %></li> 
       <li>Salary: <%= job.salary %></li> 
       <li>Contract Type: <%= job.contract %></li> 
       <li>City: <%= job.city %></li> 
       <li>Expiry date: <%= job.expirydate %></li> 
       <li>Job Type: <%= job.jobtype %></li> 
      </ul> 
     </div> 
    <% end %> 

    <p><%= paginate @jobs %></p> 

show.html.erb -

<%= @job.position %> 
    <ul> 
     <li>Company: <%= @job.company %></li> 
     <li>Salary: <%= @job.salary %></li> 
     <li>Contract Type: <%= @job.contract %></li> 
     <li>City: <%= @job.city %></li> 
     <li>Expiry date: <%= @job.expirydate %></li> 
     <li>Job Type: <%= @job.jobtype %></li> 
     <li><%= @job.description %></li> 
     <li>How to apply: <%= @job.apply %></li> 
    </ul> 

job.rb -

class Job < ActiveRecord::Base 
    validates :position, presence: true 
    validates :company, presence: true 
    validates :salary, presence: true 
    validates :companywebsite, presence: true 
    validates :companytwitter, presence: true 
    validates :contract, presence: true 
    validates :city, presence: true 
    validates :expirydate, presence: true 
    validates :jobtype, presence: true 
    validates :description, presence: true 
    validates :apply, presence: true 
    validates :contactname, presence: true 
    validates :contactemail, presence: true 
    validates :contactphone, presence: true 
end 

jobs_controller.rb -

class JobsController < ApplicationController 
    def index 
    @jobs = Job.page(params[:page]).per(25) 
    end 

    def new 
    @job = Job.new 
    end 

    def show 
    @job = Job.find(params[:id]) 
    end 

    def create 
    @job = Job.new(params.require(:job).permit(:position, :company, :salary, :companywebsite, :companytwitter, :contract, :city, :expirydate, :jobtype, :description, :apply, :contactname, :contactemail, :contactphone,)) 
    if @job.save 
     redirect_to root_path 
    else 
     render "new" 
    end 
    end 
end 

回答

5

你需要使用的strftime了点。 “

<%= job.created_at.strftime("#{job.created_at.day.ordinalize} %B %Y") %> 

”张贴于“您需要静态放置。

更多ordinalize

+0

这真棒,适用于索引页面(index.html.erb),但是当我在show.html.erb中使用相同的代码时,它返回'NameError in Jobs#show'错误,我该如何解决这个问题? – user2498890 2015-02-11 12:28:11

+0

在前面加一个'@' – 2015-02-11 13:19:12

+0

啊我明白了,谢谢你的帮助! – user2498890 2015-02-11 14:14:47

1

(这是一个除了japed's answer,但太长的评论)

因为你需要这几个地方,你可以添加你自己的时间格式:

# config/initializers/time_formats.rb 
Time::DATE_FORMATS[:short_ordinal] = ->(time) { time.strftime("#{time.day.ordinalize} %B %Y") } 

,并调用to_formatted_s或其别名to_s

job.created_at.to_s(:short_ordinal) 
#=> "11th February 2015" 
+1

另外,你也可以定义一个方法在模型中进行strftime转换(或者如果使用它们,则是装饰者/演示者)。 – 2015-02-11 13:29:23