繁体   English   中英

定义规则并添加它们后,不显示具有Rails 4.2点的优异宝石(无设计)

[英]Merit gem with Rails 4.2 points are not displayed after having defined rules and added them (Without Devise)

我已经定义了行动和规则来奖励用户,这要归功于其功绩

但是,它不起作用。 在执行奖励动作之后,用户不会获得任何积分。

这是我的代码:

首先,这是我的看法:

<div class="col-md-3 text-center">
<p class="dark-blue"><%= @user.points %></p>
<p class="grey-light">Points</p>
</div>

其次,这是point_rules模型:

#Model/merit/point_rules.rb    
module Merit


    class PointRules include Merit::PointRulesMethods
    def initialize
      score 15, on: 'pages#create', to: [:user]
    end
  end
end

第三,在Controller页面中创建的方法:

    def create
    @comment = Comment.new
    @comment.title = params[:title]
    @comment.content = params[:content]
    @comment.created_at = params[:created_at]
    @comment.score = 0
    @comment.author = User.find(session[:user_id]).user_name
    @comment.user = User.find(session[:user_id])
    @comment.save
    redirect_to "/feed"
    end

最后,merit.rb:

  #config/initializers/merit.rb  
  Merit.setup do |config|
  # Check rules on each request or in background
   config.checks_on_each_request = true

  # Define ORM. Could be :active_record (default) and :mongoid
   config.orm = :active_record

  # Add application observers to get notifications when reputation changes.
  # config.add_observer 'MyObserverClassName'

  # Define :user_model_name. This model will be used to grand badge if no
  # `:to` option is given. Default is 'User'.
   config.user_model_name = 'User'

  # Define :current_user_method. Similar to previous option. It will be used
  # to retrieve :user_model_name object if no `:to` option is given. Default
  # is "current_#{user_model_name.downcase}".
  config.current_user_method = 'current_user'




  # Add application observers to get notifications when reputation changes.
  # config.add_observer 'MyObserverClassName'



end

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

怎么解决呢?

预先谢谢你。

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

/Users/charbe/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/merit-3.0.1/lib/merit/base_target_finder.rb:13:in `find'
[merit] no target found: uninitialized constant Page. /Users/charbe/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/merit-3.0.1/lib/merit/base_target_finder.rb:13:in `find'
[merit] no target found: uninitialized constant Page. /Users/charbe/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/merit-3.0.1/lib/merit/base_target_finder.rb:13:in `find'
[merit] no target found: uninitialized constant Page. /Users/charbe/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/merit-3.0.1/lib/merit/base_target_finder.rb:13:in `find'
[merit] no target found: uninitialized constant Page. /Users/charbe/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/merit-3.0.1/lib/merit/base_target_finder.rb:13:in `find'
[merit] no target found: uninitialized constant Page. /Users/charbe/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/merit-3.0.1/lib/merit/base_target_finder.rb:13:in `find'
[merit] NoMethodError on `TrueClass#user` (called from Merit::TargetFinder#other_target)
[merit] NoMethodError on `TrueClass#user` (called from Merit::TargetFinder#other_target)

优点不适用于Rails 4.2。

https://github.com/merit-gem/merit/issues/301

你必须用

gem 'merit', '~>2.4'

同样NoMethodError on 'TrueClass#user'的错误NoMethodError on 'TrueClass#user'意味着当期望对象响应#user时,某些东西返回true

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM