问题标签 [merit-gem]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
91 浏览

ruby-on-rails - Rails 根据带有 Gem Merit 的徽章数量为用户排序

我在根据他/她收集的徽章数量订购用户时遇到问题。我正在使用 Gem Merit 制作徽章系统。所以如果我想收集用户的徽章,代码将user.badges转换为 sql

在用户模型中,我将 Merit 和has_meritcode 包括为优点文档所说的,当我写users = User.where(id: user_ids).left_joins(:merit).order(is_verified: :desc).group(:id).order("count(badges.id) desc")它时说错误,因为它无法识别meritbadges.id

我如何根据拥有最多徽章的用户对用户进行实际排序?谢谢你!

0 投票
1 回答
66 浏览

ruby-on-rails - 如何显示使用功德宝石获得徽章的创建日期

我正在尝试找到一种在查看徽章和“granted_at”记录中显示的方法。它将呈现(在视图中):

我应该启用 MeritObserver 在视图上获取此信息吗?还是有更简单的解决方案?

(我在 Rails 5 上)

编辑

感谢 TuteC,我们有一个答案:

0 投票
1 回答
83 浏览

ruby-on-rails - 在#create 操作中找不到目标

我正在尝试为名为“Selection”(成员选择产品)的第一个创建操作设置一个 badge_rule。

规则 :

app/models/merit/badge_rules.rb

控制器“选择”在文件夹“成员”中:controllers/member/selections_controller.rb

在#create 操作中,这是我的错误报告:

Merit::Action Load (0.4ms) SELECT "merit_actions".* FROM "merit_actions" WHERE "merit_actions"."processed" = $1 [["processed", "f"]] (0.2ms) BEGIN SQL (0.4ms) UPDATE "merit_actions" SET "processed" = $1, "updated_at" = $2 WHERE "merit_actions"."id" = $3 [["processed", "t"], ["updated_at", "2018-05-07 09: 35:24.776028"], ["id", 30]] (0.5ms) COMMIT [优点] 未找到目标:未初始化的常量 Member::Selection。/Users/youguild/.rbenv/versions/2.3.5/lib/ruby/gems/2.3.0/gems/merit-3.0.1/lib/merit/base_target_finder.rb:13:in `find' 完成 500 内部服务器211 毫秒内的错误(查看次数:2.8 毫秒 | ActiveRecord:134.4 毫秒)

NoMethodError(未定义的方法“成员”为真:TrueClass):

app/models/merit/badge_rules.rb:53:in `block in initialize'

为什么会发生错误,我该如何解决?

编辑

此问题已通过以下方式解决:

  1. 在 grant_on 上添加模型名称:model_name: 'Selection' (在这种情况下)
  2. 检查实例变量是否带有“@”。是 'selection = Selection.new(selection_params) ' => ' @selection = Selection.new(selection_params) '。
0 投票
1 回答
29 浏览

ruby-on-rails - 使用 Devise 创建第二个用户后,优点确实停止工作

我对 Merit & Devise 有一个棘手的问题。当一个成员创建一个帐户(第一个成员)时,他会得到一个徽章,如下面的规则所示。非常适合他。

如果我注销并创建另一个成员进行测试,则会创建第二个成员,但我在服务器日志中有一个回滚(见下文)。然后没有其他 Merit 规则适用于第二个成员,但 Merit steel 适用于第一个成员......

实在不明白,折腾了一个下午都没解决。。。

简而言之,当它工作时,我在日志中有:

当它不起作用时,我会得到回滚而不是上面的行:

我注销并创建另一个成员进行测试。该成员已创建,但我在服务器日志中有一个回滚(见下文)。然后 Merit 停止为他(第二个成员)工作,但 Merit 为第一个工作......

实在不明白,折腾了一个下午都没解决。。。

注册控制器

编辑和解决方案

如果您有一个名称不是“用户”的设计模型(例如我的成员),则必须在 Merit 文档设置之后在控制器中添加一行(见下文)。

注册控制器

感谢@TuteC 的支持。

0 投票
1 回答
118 浏览

ruby-on-rails - 在定义规则并添加规则后,不显示具有 Rails 4.2 点的 Merit gem(无设计)

我已经定义了奖励用户的行为和规则,这要归功于功绩宝石。

但是,它不起作用。执行奖励动作后,用户不拿任何积分。

这是我的代码:

首先,这是我的观点:

其次,这里是 point_rules 模型:

三、pagesController中的create方法:

最后,优点.rb:

此外,Forest在 CLI 中告诉我,模型“Merit::ActivityLog”似乎不存在“关联”框格“。

如何解决?

提前谢谢你。

编辑:这里是可能的错误[优点]没有找到目标的堆栈跟踪:未初始化的常量页面。

0 投票
1 回答
86 浏览

ruby-on-rails - 无法从设计会话控制器访问用户模型:[优点] 在 Rule#applies 上找不到 target_obj?

我有

但它给出了错误

而且我无法访问该模型,它不会授予徽章或记录用户。怎么了?我跟着导游。

https://github.com/merit-gem/merit/wiki/How-to-grant-badges-on-user-using-Devise

它正在做某事。

优点 2.4,Rails 4.2。


我试过了

但它给了


我试过了

但它给了

0 投票
1 回答
44 浏览

ruby-on-rails - 优点不为用户操作添加积分

我已经安装了 Merit 并设置了一些 points_rules。comment当他们创建一个但没有其他人时,我成功地向我的“用户”添加了积分。

我正在使用设计。

点规则

用户.rb

favourite_coffeeshop.rb - 加入表。

用户可以在favorite_coffeeshops表格中添加一个新行,这样就可以正常工作了。

从控制台日志来看,它似乎没有尝试写入绩效模型。

0 投票
2 回答
636 浏览

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

你好,我有一个 Rails 应用程序,它是一个使用设计、ahoy 和优点的封闭社区。

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

用户模型

资源模型

控制器

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

看法

架构

路线

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

0 投票
1 回答
78 浏览

ruby-on-rails - Merit gem - 显示特定徽章和获得它的用户

我想创建一个方法badges#show,例如在StackOverFlow中完成的方法,其中显示所选徽章以及获得它的用户。我创建了一个BadgesController,其中包含以下内容:

merit.rb(我只显示下面第一个徽章的代码):

但是,当我尝试通过执行显示徽章名称时<%= @badge.name %>,我得到以下 信息undefined method 'name' for #<#<Class:0x000000001290cc18>:0x000000000c8c9d10>

我在调用badges#show方法时传递的参数是1(在 url: /badges/1中)。

以下行引发相同的错误:

  • @badge = Merit::Badge.find_by_id(params[:badge_id])
  • @badge = Merit::Badge.find_by_id(params[:id])
  • @badge = Merit::Badge.find(params[:id])

如果我@badge = Merit::Badge.find(params[:badge_id])改为@badge = Merit::Badge.find(:id)我得到这个:Could not find Merit::Badge with key "id"

当我尝试调试我的代码时,<%= debug @badge %>视图中会发生以下情况(带有@badge = Merit::Badge.find(params[:badge_id])):

它显示了一个哈希,其中包含我在初始化程序文件中拥有的所有徽章merit.rb。我不明白为什么控制器没有传递id参数。

<%= @badge.find(1).name %>然而,在视图中工作正常。

我做错了什么?

先感谢您!