0

アクティブな管理インターフェイスに次の追加を行いました。

action_item :only => :show do
   link_to('Approve this article', approve_admin_article_path(article)) if article.approved.nil?
end

member_action :approve, :method => :get do
  # do approval
  redirect_to :action => :show, :notice => "Approved!"
end

これにより、次のエラーがスローされます。

:Arbre::HTML::Article の未定義のメソッド「承認済み」

私が考えていることは、私が記事クラスではなく記事タグを渡していると Active Admin が考えているということですか?

これに対する回避策を知っている人はいますか?おそらくエイリアシング?

ありがとう!

class Article < ActiveRecord::Base

attr_accessible :body

# 関係: 所属先 :記事可能、ポリモーフィック: true、:カウンター_キャッシュ => 真 has_many :comments、as: :commentable、order: 'created_at DESC'、dependent: :destroy

# 検証 validates_presence_of :body validates_length_of :body、最大: 15000

終わり

4

2 に答える 2

1

回避策を見つけた

クラスに「Article」という名前を付けると、何か怪しいものがあります。ActiveAdmin は、<article>HTML タグとしてレンダリングするときにそれに関連します。記事オブジェクトが生成される場所であるため、もちろんコントローラーのどこかに問題があります。

だから、私はコントローラをオーバーライドします

ActiveAdmin.register Article do

  controller do
    def show
      # grabbing my desired Article and not the <article> tag into some global variable
      @@myarticle = Article.find(params[:id])
    end
  end

  sidebar :article_details , :only => :show do
    ul do
      # using the @@myarticle which I know should be initialized
      # (you can put .nil? checking here if you want)
      li link_to 'Article Images (' + @@myarticle.images.count.to_s + ')' , admin_article_article_images_path(@@myarticle)
      li link_to 'Article Clips ('+@@myarticle.clips.count.to_s + ')' , admin_article_article_clips_path(@@myarticle)        
    end
  end
end

楽しみ

于 2013-07-09T07:28:50.787 に答える
0

「表示」ブロックに問題があると仮定すると、表示ブロックを次のように変更できます。

show do |object|
end

その後、衝突することなく object.some_method を呼び出すことができます。この方法では、コントローラーをオーバーライドする必要はありません。

于 2016-01-22T15:11:17.210 に答える