2017-05-21 4 views
0

写真を表示するたびにビュー数を取得したいと考えています。これは私のショーの方法です、なぜこれがうまくいかないのか分かりませんが、まっすぐに見えます。ブランチはたびに呼び出されますが、データベースが更新をビングされていません...ここコントローラに保存されていないレール数

def show 
    if current_user.nil? || @photo.profile != current_user.profile 
     @photo.views += 1 
     @photo.save! 
    end 
    render layout: 'layouts/photo' 
    end 
+0

ローカル変数を作成し、.find(@ photo.id)コールを実行することで問題を解決しましたが、参照された変数がDBを更新していない理由を知りたいのですが、私にはうんざりです。 –

答えて

0

問題が@profileが単純に指定されていないということです。それはそのことについては宝石を使用するのが最善だということのほかに

def show 
    @profile = Profile.find(params[:id]) 
    if @profile && current_user.nil? || @photo.profile != current_user.profile 
    @profile.views += 1 
    @profile.save 
    end 
    render layout: 'layouts/photo' 
end 

: 次のような何かをすることをお勧めします。私はimpressionistを提案します。それはあなたのための最も重要なものを処理し、ボットをブロックします。また、必要な追加機能も用意されています。

+0

私はそうは思わない、ATprofileは実際にはこの例ではないbefore_actionメソッドで作成されています。 ATprofileが定義されているので、なぜ私はまだ不思議に思っています。 –

関連する問題