問い合わせ中です
@users = User.all
@users
name、created_at、email、mobile などを属性値として含む
作成した at を mysql の日時形式からユーザーが読める形式に更新し、コントローラーで更新したい
日付を人間が読める形式に変換するコードを書きましたが、表示する前に属性に値を設定する方法がわかりません
したがって、どの方法も評価されます
問い合わせ中です
@users = User.all
@users
name、created_at、email、mobile などを属性値として含む
作成した at を mysql の日時形式からユーザーが読める形式に更新し、コントローラーで更新したい
日付を人間が読める形式に変換するコードを書きましたが、表示する前に属性に値を設定する方法がわかりません
したがって、どの方法も評価されます
Rails は、追加の日付/時刻形式を追加できます...次のようなものを初期化ファイルに入れます。
Date::DATE_FORMATS[:short_date] = "%b %d, %Y"
Date::DATE_FORMATS[:short_slashed] = "%m/%d/%Y" #careful when giving this to mysql adapter
Date::DATE_FORMATS[:date_dashed] = "%m-%d-%Y"
Date::DATE_FORMATS[:mysql_date] = "%Y-%m-%d"
Date::DATE_FORMATS[:full_date] = "%A, %B %d, %Y"
Time::DATE_FORMATS[:short_slashed] = "%m/%d/%Y %I:%M %p"
Time::DATE_FORMATS[:mytime] = "%a %b %d at %I:%M %p"
Time::DATE_FORMATS[:short_date] = "%b %d, %Y"
Time::DATE_FORMATS[:date_dashed] = "%m-%d-%Y"
Time::DATE_FORMATS[:mysql_date] = "%Y-%m-%d"
そして、ビューで、それらのいずれかを選択できます。
@user.created_at.to_s(:mytime)
@user.created_at.to_s(:short_date)
ビューの属性でstrftime()
直接使用します。created_at
@user.created_at.strftime("%D")
ドキュメント: http://www.ruby-doc.org/core-1.9.3/Time.html#method-i-strftime
見栄えのためだけに属性値をいじるのは悪い考えです。そうしないでください。
これはヘルパー メソッドのように見えます。私はおそらくそれをユーザーモデル自体に入れます(make_human_date
指定していない日付を「人間化」するロジックが含まれています)
# model
class User
def human_created_at
make_human_date(created_at)
end
end
# view
<%= @user.human_created_at %>
または、実際のヘルパー メソッドを作成することもできます。これは、プレゼンテーションを支援するだけであり、ビジネス ロジックの一部ではないためです。
# helper
module MyControllerHelper
def human_created_at user
make_human_date(user.created_at)
end
end
# view
<%= human_created_at(@user) %>