2

Web アプリケーションの管理者とフロント エンドの両方で承認と認証に単一のユーザー モデルを使用して、devise、アクティブな管理者、および cancan を正常にマージしました。ユーザー モデルのブール値フラグが承認されましたか? そのため、アプリケーションを公開できます (データベースで承認された状態の true または false)。今、私は管理ページからユーザーを「のみ」承認したいと考えています。

in app\model\user.rb

def approve!
  #set approved boolean state in database to true
  approved = true
end

def disapprove!
  #set approved boolean state in database to false
  approved = false
end

アクティブな管理者に私は持っています。

app\admin\user.rb

  member_action :approve, :method => :put do
    App.find(params[:id]).approve!
    redirect_to [:admin, resource], :notice => "Developer Approved"
  end

   member_action :disapprove, :method => :put do
      user = User.find(params[:id])
      user.disapproved!
      redirect_to admin_user_path(user), notice: "Successfully Disapproved Developer!"
   end

これは列リンク用です

    column "Approve Developer" do |user|

       if user.developer? && user.approved_developer?
       link_to 'Disapprove Developer', "#"

    elsif user.developer? && !user.approved_developer?
       link_to 'Approve Developer',approve_admin_user_path

    else
       "Not A Developer"
    end

  end

実行中のレーキ ルートが表示されます

approve_admin_user PUT    /admin/users/:id/approve(.:format)  admin/users#approve
disapprove_admin_user PUT    /admin/users/:id/approve(.:format)  admin/users#disapprove

すべて問題ないように見えますが、ページを読み込んで開発者リンクの承認または開発者リンクの承認を拒否すると、No route matches {:action=>"approve", :controller=>"admin/users"}エラーが発生します。

ActiveAdmin.routes(self)私はまた、routes.rbのようにアクティブな管理者用のルートを設定しましresources :users た。ここで何が間違っているのかまだわかりません。助けていただければ幸いです。

4

3 に答える 3

0

ルート エントリでわかるように、リンクの作成で :id が欠落しています。これを試して:

link_to 'Approve Developer', approve_admin_user_path(:id => user.id)

機能しない場合は、サーバーを再起動することを忘れないでください。

于 2013-06-07T19:19:03.153 に答える
0

私は同じ問題を抱えていました。次のコードのこの部分を編集することで解決できると思います。

 link_to 'Approve Developer',approve_admin_user_path()

に:

link_to 'Approve Developer',approve_admin_user_path(user), :method => :put

link_to のデフォルトの http 動詞は GET です。私の場合、それでうまくいきました。

于 2013-09-01T14:55:31.310 に答える
0

これを試して

map.namespace :admin do |a|
   a.resources :users, :member => {:approve => :get} 
end
于 2012-10-03T11:13:26.523 に答える