7

Rails 3.2 と ActiveAdmin 0.4.4 を使用してアプリケーションを開発しています。Teaser (/app/models/teaser.rb) という名前のモデルがあります。

class Teaser < ActiveRecord::Base
  attr_accessible :img, :name, :url
  validates :img, :name, :presence => true
  mount_uploader :img, TeaserUploader
end

そして、それに ActiveAdmin を追加しました (/app/admin/teaser.rb):

# encoding: UTF-8
ActiveAdmin.register Teaser do
    form do |f|
        f.inputs "Teaser" do
            f.input :name, :label => 'Текст'
            f.input :url, :label => 'Ссылка'
            f.input :img, :as => :file, :label => 'Картинка'
        end
        f.buttons
    end
end

ここで、「http://localhost:3000/admin/teasers」にアクセスすると、次のエラーが表示されます。

C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/activeadmin-0.4.4/app/views/active_admin/resource/index.html.arb を表示すると、行 #1 が発生します: Collection はありませんページ付けされたスコープ。:paginated_collection を呼び出す前に、collection.page(params[:page]).per(10) を設定します。

Linux (Ubuntu 12.04) でアプリをテストすると、同じエラーが発生します。

この問題は次の方法で解決できます (/app/admin/teaser.rb):

# encoding: UTF-8
ActiveAdmin.register Teaser, :as => 'Somename' do

しかし、この方法を使用すると、/app/config/locales/XX.yml を使用してこのモデルを翻訳できません。

他のすべてのモデルは正常に動作します。

4

7 に答える 7

9

場合によっては、アクティブ管理でモデルのラベルを変更するだけで済みます

休憩

ActiveAdmin.register Stage do

作品

ActiveAdmin.register Stage, as: "Opportunity Stage" do

同じケースがモデルページの場合です

更新: 5 月 30 日

次のようなモデルで、この問題に再び遭遇しました

ActiveAdmin.register PageRedirects do

そしてapplication_controller.rbには次のものがありました:

before_filter :abc

def abc
  @page_redirects = ...
end

このメソッドは、私が推測する active-admin コントローラーからの @page_redirects をオーバーライドします。

于 2014-04-04T10:49:40.923 に答える
5

ここに解決策があります (/app/models/teaser.rb)

collection_action :index, :method => :get do
  scope = Teaser.scoped
  @collection = scope.page() if params[:q].blank?
  @search = scope.metasearch(clean_search_params(params[:q]))
end
于 2012-09-05T13:21:21.103 に答える
4

競合しているコントローラーと同じ名前の変数がある可能性があります。多分あなたのapplication_controller.rbに?

于 2014-05-07T22:25:56.563 に答える
2

答えを改善するだけです...アクティブな管理フィルターの使用時に問題が発生したため、コードを少し変更する必要がありました。それは今私のために働いています。

collection_action :index, :method => :get do
  scope = Teaser.scoped
  @search = scope.metasearch(clean_search_params(params[:q]))
  @collection =  @search.page()  
end
于 2013-07-24T21:04:52.220 に答える
0

アクティブな管理者にデフォルトのスコープを追加すると、問題が解決しました。

ActiveAdmin.register StaticPage, as: 'Static Page' do
  scope :all, default: true
  # ...
end
于 2015-11-20T12:58:30.327 に答える