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 来重定向_to,这会导致(我假设)不良行为,因为当我“cmd + 单击”时,当我停留在页面上时,新选项卡不会在后台打开(听起来微不足道但对于我正在构建的东西来说,这是一种非常常见且至关重要的用户行为)。

所以简而言之,我很想听听另一种/推荐的方法......我一直在考虑使用 ajax 来更新 last_visited 字段而不是控制器/模型,这是推荐的吗?我该怎么办?

非常感谢任何帮助/想法/方向。谢谢你的时间。

4

0 回答 0