Rails未初始化的常量Article :: CategoryCount

时间:2014-02-28 00:13:24

标签: ruby-on-rails ruby activerecord associations polymorphic-associations

我有一个模型,category_count,我想要属于2个模型,文章模型和类别模型。当我尝试访问 server / admin / articles 时  我收到错误未初始化的常量Article :: CategoryCount 。我正在使用active_admin进行管理。 当我这样做: server / articles / 1 / category_counts 我也收到错误未初始化的常量CategoryCountsController 我正在使用Rails 4

这是 category_count

迁移
class CreateCategoryCounts < ActiveRecord::Migration
  def change
    create_table :category_counts do |t|
      t.date :date
      t.belongs_to :category_countable, polymorphic: true

      t.timestamps
    end
      add_index :category_counts, :category_countable_id
  end
end

在我的模型/ article.rb和model / category.rb中,我设置了:

has_many:category_counts,as :: category_countable

在我的模型/ category_counts.rb中,我设置了:

belongs_to:category_countable,polymorphic:true

我的category_count_controller.rb如下:

class CategoryCountController < ApplicationController
before_filter :load_category_countable

def index
 @category_counts = @category_countable.category_counts
end

def new
 @category_counts = @category_countable.category_counts.new
end

def create
 @category_count = @category_countable.category_counts.new(params[:category_count])
 if @category_count.save
    redirect_to [@category_countable, :category_counts], notice: "Category Count created."
 else
    render :new
 end
end

private

def load_category_countable
  klass= [Article, Category].detect {|c| params["#{c.name.underscore}_id"]}
  @category_countable = klass.find(params["#{klass.name.underscore}_id"])
end
end

1 个答案:

答案 0 :(得分:1)

很可能您已将资源定义为

resources :category_counts

您收到错误,因为路线正在寻找server/articles/1/category_counts。 注意复数 ** category_counts **。 如果仔细查看错误消息uninitialized constant CategoryCountsController , 路线正在寻找复数CategoryCountsController

要解决此问题,请重命名控制器

class CategoryCountsController < ApplicationController ## plural controller name
...
end

此外,请确保将控制器文件名重命名为category_counts_controller.rb 再次复数。

注意:根据rails惯例,控件名称应为复数。