什么是“未定义方法`rails'”,我该如何解决?

时间:2014-09-21 21:25:50

标签: ruby-on-rails ruby-on-rails-3 activeadmin

我正在建立一个简单的ActiveAdmin设置,以便在RoR中使用基本的管理编码。没有什么花哨。我发了一个"帖子"控制器和资源和模型,如下所示。我的问题是我仍然收到以下错误:

NoMethodError in Admin::PostsController#index
undefined method `rails' for #<Admin::PostsController:0x00000107ad3038>

这是正确的,因为我还没有定义rails方法,但我还没有打过一个方法。实际上,在我的任何代码中都没有调用rails方法。这让我相信我在某个地方有语法问题,但我似乎无法找到它。请帮助我理解这一点。


/admin/post.rb

ActiveAdmin.register Post do

  scope_to :rails

  permit_params :title, :slug, :blurb, :content, :category_id

  index do
    column :title
    column :slug
    column :blurb
    column :created_at
    actions
  end

  form :html => {:enctype => "multipart/form-data"} do |f|
    f.inputs "Details" do
      f.input :title
      f.input :slug
      f.input :blurb
      f.input :category
      f.input :content, :as => :text
    end

    f.inputs "Images" do
      f.input :image, :label => 'Post Image', :as => :file
    end
    f.actions
  end

end

/controllers/posts_controller.rb

class PostsController < ApplicationController

  def index
    @posts = Post.all
  end

  def show
   @post = Post.find(params[:id])
  end

end

/models/post.rb

class Post < ActiveRecord::Base

  belongs_to :category
  scope :rails, -> { where(category_id: 1) }

end

如您所见,我从未在代码中调用任何rails方法。这个错误来自哪里?

1 个答案:

答案 0 :(得分:1)

此错误可能来自您的视图admin / post.rb中的此行:

scope_to :rails

尝试评论出来。

然后尝试这样的事情:

ActiveAdmin.register Post do
  controller do
    def resource
      Post.where(category_id: 1)
    end
  end
end