どうしたの?:
私は一般的なブログを作成しており、本質的な機能の作成に取り組んでいます。問題は、ビュー (特定の投稿を見た人の数) が正しく表示されないことです。
最新技術: .
この時点で、投稿とコメントの 2 つのコントローラー/モデルがあります。状況をよりよく理解できるように、スキーマを提供します。
create_table "comments", :force => true do |t|
t.string "name"
t.text "body"
t.integer "like"
t.integer "hate"
t.integer "post_id"
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
end
add_index "comments", ["post_id"], :name => "index_comments_on_post_id"
create_table "posts", :force => true do |t|
t.string "name"
t.text "content"
t.integer "view"
t.integer "like"
t.integer "hate"
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
end
私がやったこと: Post Controller で、誰かが投稿を作成するたびにビューを 0 に設定してビューを初期化しようとしました。
# POST /posts
# POST /posts.json
def create
@post = Post.new(params[:post])
@view = @post.view
@view = 0
respond_to do |format|
if @post.save
format.html { redirect_to posts_path, notice: 'success.' }
format.json { render json: @post, status: :created, location: @post }
@view = @post.view
@view = 0
else
format.html { render action: "new" }
format.json { render json: @post.errors, status: :unprocessable_entity }
end
end
そして、投稿は閲覧数を表示できるはずです。そこで、投稿のshow.html.erbファイルに、以下の部分も追加しました。
<p>
<b>views:</b>
<%= @post.view %>
</p>
機能しない方法:
ビューの数はまったく表示されません。データベースを確認したところ、ユーザーが投稿を追加するたびに 0 に初期化しようとしても、列は空白でした。「ビュー」変数にアクセスしようとする方法に問題があると思いますか? @view = @post.viewとしてアクセスするのは正しくありません
か?
すでに投稿を見たユーザーが再訪問するかどうかを検討する必要があることは承知していますが、ビュー変数にアクセスする/初期化/インクリメントする方法を正確に理解するまで、まだそこにはいません。
事前にご協力いただき、誠にありがとうございます。
-マックス