sqlで生成されるcreated_atを整形するのに悩んだため、その実装方法のメモ
#sqlファイル
テーブルを作成する。
table.sql
create table todos
(
id integer PRIMARY key,
body text,
created_at
);
#rbファイル
active recordを用いて、先ほど作成したtodosテーブルをオブジェクトに結びつける。
tlist.rb
class Todos < ActiveRecord::Base
validates :body, presence: true
end
オブジェクトをインスタンス変数に格納する。
tlist.rb
get '/' do
@todos = Todos.all
erb :index
end
#erbファイル
時刻を表示してみる。
index.erb
<div class="user_box">
<p class="user_name">しゅうと</p>
<ul>
<% @todos.where(users_userName: "しゅうと").each do |todo|%>
<li data-id = "<%= todo.id%>" data-token = "<%= Rack::Csrf.csrf_token(env)%>">
<div class="one">
<%= Rack::Utils.escape_html(todo.body)%>
</div>
<div class="time">
<%= todo.created_at%>
<span class="delete">[x]</span>
</div>
</li>
<% end%>
</ul>
</div>
調べたところ、strftimeメソッドで整形できる模様。
メソッドを適用して実行。
index.erb
<div class="user_box">
<p class="user_name">しゅうと</p>
<ul>
<% @todos.where(users_userName: "しゅうと").each do |todo|%>
<li data-id = "<%= todo.id%>" data-token = "<%= Rack::Csrf.csrf_token(env)%>">
<div class="one">
<%= Rack::Utils.escape_html(todo.body)%>
</div>
<div class="time">
<%= todo.created_at.strftime("%Y/%m/%d %H:%M:%S")%>
<span class="delete">[x]</span>
</div>
</li>
<% end%>
</ul>
</div>
文字列だと怒られました。
文字列以外に変換する必要があるみたいなので、date型に変換してみる。
index.erb
<div class="user_box">
<p class="user_name">しゅうと</p>
<ul>
<% @todos.where(users_userName: "しゅうと").each do |todo|%>
<li data-id = "<%= todo.id%>" data-token = "<%= Rack::Csrf.csrf_token(env)%>">
<div class="one">
<%= Rack::Utils.escape_html(todo.body)%>
</div>
<div class="time">
<%= todo.created_at.to_date.strftime("%Y/%m/%d %H:%M:%S")%>
<span class="delete">[x]</span>
</div>
</li>
<% end%>
</ul>
</div>
time型に変換して実行してみる。
index.erb
<div class="user_box">
<p class="user_name">しゅうと</p>
<ul>
<% @todos.where(users_userName: "しゅうと").each do |todo|%>
<li data-id = "<%= todo.id%>" data-token = "<%= Rack::Csrf.csrf_token(env)%>">
<div class="one">
<%= Rack::Utils.escape_html(todo.body)%>
</div>
<div class="time">
<%= todo.created_at.to_time.strftime("%Y/%m/%d %H:%M:%S")%>
<span class="delete">[x]</span>
</div>
</li>
<% end%>
</ul>
</div>
どんな形式で与えられているのか、エラーに直面した際には調べる必要性がありますね。
なおこのアプリケーションの原型はドットインストールのsinatra入門を参考にしています。