我正在建立一个简单的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
方法。这个错误来自哪里?
答案 0 :(得分:1)
此错误可能来自您的视图admin / post.rb中的此行:
scope_to :rails
尝试评论出来。
然后尝试这样的事情:
ActiveAdmin.register Post do
controller do
def resource
Post.where(category_id: 1)
end
end
end