0

Rails のルート/コントローラーと ajax について理解しようとしていますが、現在の課題を解決するために少し方向性が必要です...

データベースからリンクのリストをレンダリングしています。それぞれに「last_visited」フィールドが含まれています。

ユーザーとして、リンクをクリックして新しいタブ (ターゲット = _blank) で開きたいと考えています。そうすることで、リンクの「last_visited」フィールドが現在の日時で更新されます。

これが私がこれまでに持っているものです:

意見

%li.feed
  = link_to(visit_path(:id => feed.id), :method => :put, :target => '_blank') do
    .title=feed.title

ルート

match "/feeds" => "pages#visit_feed", :as => :visit

コントローラ

def visit_feed
 @feed = Feed.find(params[:id])
 @feed.update_visit_date!

 respond_to do |format|
   format.html { redirect_to @feed.url }
   format.json { head :no_content }
 end
end

「last_visited」フィールドの更新はモデルで処理されます。

これが機能している間、リンクを含む新しいタブが開き、last_visited の日付が更新されます。アンカー タグは次のようにレンダリングされます (href に注意してください)。

<a href="/feeds?id=7" data-method="put" rel="nofollow" target="_blank">
  // content
</a>

私はコントローラ format.html を redirect_to に使用していますが、これは (私が推測する) 望ましくない動作を引き起こしています。つまり、"cmd + クリック" すると、ページにとどまっているときにバックグラウンドで新しいタブが開かないということです (些細なことに聞こえます)。しかし、それは私が構築しているものにとって非常に一般的で重要なユーザーの行動です)。

要するに、代替/推奨アプローチについて聞きたいと思っています...コントローラー/モデルではなく、ajaxを使用してlast_visitedフィールドを更新することを検討していますが、これは推奨されますか? これについてどうすればいいですか?

どんな助け/考え/指示も大歓迎です。御時間ありがとうございます。

4

0 に答える 0