基本的に画像、タイトル、URL を持つAdvertモデルがあります。画像にはCarrierWaveを使用しています。すべてうまく機能していますが、インプレッションとクリックをカウントしたいと考えています。
ここまでで、インプレッション数とクリック数の 2 つの整数列を追加しました
ページコントローラーがあり、ページに応じて変化する@advert変数を設定しました。この質問を読んだ後、インプレッションを増やすことができます:
def index
@advert = Advert.sample
@advert.increment! :impressions
end
クリック数を増やすのに問題があります| 以下は、ユーザーが image_tag をクリックすると、通常どおり URL に移動するが、@advert によってクリック列がインクリメントされるように変更する必要があるコードです。これが私の現在のコードです(私はHAMLを使用しており、これはファイル内のコードです:_advert.html.haml):
= link_to image_tag("#{advert.foto_url.to_s}",:alt => "an image ad linking to #{advert.url}", :title => advert.title), advert.url, :target => "blank"
インクリメントを成功させる最も簡単でクリーンな方法は何ですか? 誰かが上のリンクをクリックしたときの広告のクリック属性?
アップデート:
以下の Aaron からの提案を使用していますが、2 つの新しい懸念が生じます。
ユーザーが画像の上にマウスを置くと、最終的にたどり着くリンクとは異なるリンクが表示されます。単にクリックをカウントするためにリダイレクトするのではなく、クリックした場合に最終的に表示される最終的な URL を表示してもらいたいと考えています。
誰かが広告の URL (例: /adverts/1) を直接取得すると、カウンターが増加します。クリックせずに。
私は実際には Advert 用のショー ビューを持っていませんでしたが、これを行うために追加しました。明確にするために、これは機能しますが、ベストプラクティスに違反しているように感じます. アーロンに感謝します。