gpt4 book ai didi

ruby-on-rails - 设计 Ahoy 跟踪链接访问

转载 作者:行者123 更新时间:2023-12-04 06:04:09 25 4
gpt4 key购买 nike

您好,我有一个 Rails 应用程序,它是一个使用 devise、ahoy 和 Merit 的封闭社区。

我们有一个名为资源的脚手架。每个资源都有一个链接

用户模型

class User < ApplicationRecord
has_merit
has_many :visits, class_name: “Ahoy::Visit”
end

资源模型

class Resource < ApplicationRecord
has_rich_text :description
belongs_to :category
end

Controller

我想使用 Ahoy 跟踪点击该链接的用户,以便我可以通过访问奖励积分。

查看

<table>
<thead>
<tr>
<th>Title</th>
<th>Link</th>
<th>Category</th>
<th colspan="3"></th>
</tr>
</thead>

<tbody>
<% @resources.each do |resource| %>
<tr>
<td><%= resource.title %></td>
<td><%= link_to "Learn More", resource.link, class: 'btn btn-dark btn-sm' %></td>
<td><%= resource.category.name %></td>
<td><%= link_to 'Show', resource %></td>
<td><%= link_to 'Edit', edit_resource_path(resource) %></td>
<td><%= link_to 'Destroy', resource, method: :delete, data: { confirm: 'Are you sure?' } %></td>
</tr>
<% end %>
</tbody>
</table>

架构

create_table "resources", force: :cascade do |t|
t.string "title"
t.string "link"
t.bigint "category_id", null: false
t.datetime "created_at", precision: 6, null: false
t.datetime "updated_at", precision: 6, null: false
t.index ["category_id"], name: "index_resources_on_category_id"
end

路线

Rails.application.routes.draw do
resources :visits
resources :resources
devise_for :users, controllers: { registrations: 'registrations' }
end

如何跟踪链接点击并分配积分?

最佳答案

当点击链接时,我们向visits_controller 发出请求。配置/routes.rb 资源:访问

Controller /visits.rb

class VisitsController < ApplicationController
def create
Ahoy::Visit.track('click', link_id: params[:resource_id])
end
end

我假设 ahoy.authenticate(user) 写在某处让我们将类资源添加到链接并将链接 ID 作为数据属性,以便我们可以绑定(bind) ajax 调用来访问携带必要数据的 Controller 查看

<td><%= link_to "Learn More", resource.link, class: 'resource btn btn-dark btn-sm' data: {resource_id: resource.id} %></td>

Assets /javascripts/tracker.js

(document).on('turbolinks:load', function() { #or whatever you used to do in your app
$('a.resource').on('click', function() {
that = this
$.ajax({
url: 'visits',
method: 'POST',
data: {resource_id: $(that).data('resource_id')}
})
})
})

关于ruby-on-rails - 设计 Ahoy 跟踪链接访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56511202/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com