0
ユーザーが最初に投稿の新しいページ(.../posts/new)にアクセスしたときのタイムスタンプを保存したいこのタイムスタンプをデータベースの投稿テーブルに保存します。Rails:ユーザーが「新しい」ページにアクセスしてデータベースに保存するときのタイムスタンプの取得
私はポストのテーブルでは、これまで
- 何をやったか、私が追加され、私がきた私のposts_controller.rbでは、データ型のタイムスタンプ
- を持っているという名前の列first_time_visitを移行しましたfirst_time_visit属性をTime.nowに設定して@postを初期化しました
- 私はすでに「first_time_visit」属性をホワイトリストに入れました。
問題:
- 新しい投稿を作成して保存した後、first_time_visit列は、まだ "ゼロ" です。
私post.rbモデルで:
def add_first_time_visit(time) self.first_time_visit = time end
私posts_controllerで私のposts_controller.rb
def new @post = Post.new(first_time_visit: Time.now) end def create @post = current_user.posts.build(post_params) if @post.save redirect_to posts_path, notice: "Post saved." else render 'new', notice: "Post could not be saved." end end ... private def post_params params.require(:post).permit(:description, :link, :first_time_visit) end
で
は、私はまた、別の解決策を試してみました。 rb:
def new
@post = Post.new
@post.add_first_time_visit(Time.now)
end
しかし、この解決法でも私には「無」しか与えられません。
ああ、私はとても馬鹿だと感じています。もちろん、隠しフィールドはうまくいきました。私は<%= hidden_field:first_time_visit、value = Time.current%>を自分のフォームに追加しました。しかし、私はあなたの2番目の提案は私がそれを望むように動作しないだろうと思いますか?なぜなら、ユーザーは/ posts/new pageを訪れる時間ではなく、投稿が作成される時刻を追加するからです。 – OhDaeSu
あなたは2番目の提案はあなたのケースでは動作しません。答えから削除します。 –
'first_time_visit'をセッションに保存し、' create'アクションでそれを抽出することもできます。 –