我正在努力了解 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 字段而不是控制器/模型,这是推荐的吗?我该怎么办?
非常感谢任何帮助/想法/方向。谢谢你的时间。