ActiveAdmin Ratyrate 无法找到 current_user 或备选方案

ActiveAdmin Ratyrate unable to find current_user OR Alternative

我一直在尝试将 raytrate 集成到 ActiveAdmin 中,但在尝试将部分内容包含到我的 Activeadmin supply_company.rb 中时,似乎无法找到 'current_user'。我知道,通过标准安装的 ActiveAdmin 和设计,我将管理员用户保留为 admin_user,因此应该能够使用 current_admin_user 来设置当前用户。我怀疑我尝试将渲染包含在侧边栏中的方式。

或者,如果有人知道他们知道在 ActiveAdmin 中有效的评级替代模型,我很乐意看一看

错误信息为 ActionView::Template::Error(#<#:0x6b50a58> 的未定义局部变量或方法“current_user”):

app/controllers_rater_controller.rb

class RaterController < ApplicationController

  def create
    if admin_user_signed_in?
      obj = params[:klass].classify.constantize.find(params[:id])
      obj.rate params[:score].to_f, current_admin_user, params[:dimension]

      render :json => true
    else
      render :json => false
    end
  end
end

app/models/admin_user.rb

class AdminUser < ActiveRecord::Base

 rolify
  has_one :profile, foreign_key: :admin_user_id
  accepts_nested_attributes_for :profile

  has_many :addresses
  has_many :address_types, :through => :addresses

  accepts_nested_attributes_for :addresses

  ratyrate_rater

  # Include default devise modules. Others available are:
  # :confirmable, :lockable, :timeoutable and :omniauthable
  devise :database_authenticatable, 
         :recoverable, :rememberable, :trackable, :validatable

  has_attached_file :avatar, :styles => { :medium => "300x300>", :thumb => 
  "100x100>" }, :default_url => "/images/:style/missing.png"
  validates_attachment_content_type :avatar, :content_type => /\Aimage\/.*\Z/

end

app/models/supply_companies.rb

class SupplyCompany < ActiveRecord::Base

  has_many :products, :through => :product_supply_companies
  has_many :product_supply_companies, :foreign_key => 'supply_company_id'

  accepts_nested_attributes_for :products
  accepts_nested_attributes_for :product_supply_companies, :allow_destroy => true

  ratyrate_rateable "communication", "quality", "price"
end

/app/admin/supply_company.rb

ActiveAdmin.register SupplyCompany do
   permit_params :id, :company_name,
                 products_attributes: [:id, :product_name, :product_description],
                 product_supply_companies_attributes: [:id, :product_id],
                 supply_company_ratings_attributes: [:id, :admin_user_id, :supply_company_id, :supply_company_rating ],
                 admin_user_attributes: [:id]
  index do
    column :id
    column :company_name
    column :products do |pt|
      pt.products.collect {|c| c.product_name.capitalize }.to_sentence
    end
    actions
  end

filter :company_name

   form(:html => {:multipart => true}) do |f|
     f.inputs "Company Details" do
     f.input :company_name
     end
     f.actions
   end
   show title: :company_name do
     attributes_table do
       row :company_name
     end
     end

  sidebar "Products", only: :show do
    attributes_table_for supply_company do
      row "Ratings" do
        render  'supply_company_ratings'
      end
      row :products do |pt|
        pt.products.collect {|c| link_to c.product_name.capitalize, admin_products_path + "\/" + c.id.to_s}.join(", ").html_safe
      end
    end
  end
end

app/views/admin/supply_companies/_supply_companines_ratings.html.erb

<h2>Communication  :</h2> <%= rating_for @supply_company, "communication" %>
<h2>Engine :</h2> <%= rating_for @supply_company, "quality" %>
<h2>Price  :</h2> <%= rating_for @supply_company, "price" %>

听起来你已经用 rails g ratyrate user 安装了 ratyrate,你需要用 rails g ratyrate admin_user 安装它。