2014-09-21 4 views
0

Я строю простую настройку 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

Эта ошибка, вероятно, идет от этой линии в ваш взгляд администратора/post.rb:

scope_to :rails 

Попробуйте комментируя это.

Тогда попробуйте что-то вроде этого, вместо:

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

закомментировать 'scope_to: rails' линия работала как шарм! Почему это работает? И какой блок контроллера вы добавили? – elersong

+0

хорошо, что вы поставили задачу ограничить должности категории category_id 1 в вашей модели. Я понятия не имею, почему вы это сделали. Я просто дал вам код, чтобы сделать эту работу. – manishie

+0

Я думаю, вы только что скопировали этот код откуда-то. Поэтому, если вам не нужно изменять область действия, просто избавитесь от нее. – manishie

Смежные вопросы