2014-02-12 4 views
5

Dies ist wahrscheinlich etwas sehr einfaches, aber ich kann nicht herausfinden, warum meine Sammelaktionen nicht angezeigt werden. Laut der Dokumentation scheint es, dass ich nur die Methode collection_actions in dem Block aufrufen muss, der zur Registrierung übergeben wurde. Ich möchte eine Aktion namens "Notify All" auf der Admin-Seite meines Benutzers hinzufügen. Hier ist der Code:ActiveAdmin - Anzeigen von benutzerdefinierten Sammlungsaktionen in der Indexseite

ActiveAdmin.register User do 

    menu :label => "Users", :priority => 3 

    filter :twitter_id 
    filter :facebook_id 
    filter :created_at 
    filter :allows_notifications 
    filter :created_at 

    actions :all, except: [:destroy, :new] 

    collection_action :notify_all, :method => :post do 
    puts "notifying...." 
    end 

    batch_action :flag do |selection| 
    puts "flagging...." 
    end 

    index do 
    selectable_column 
    column "", :sortable => false do |user| 
     "<img src='#{user.avatar_url}' alt='user avatar' style='width:24px; height:24px;'/>".html_safe 
    end 
    column :uuid 
    column :twitter_id 
    column :facebook_id 
    column :allow_notifications do |user| user.allow_notifications ? "true" : "false" end 
    column :blocked do |user| user.blocked ? "true" : "false" end 
    column :created_at 

    default_actions 
    end 

    form do |f| 
    f.inputs :allow_notifications,:blocked 
    f.buttons 
    end 

    show do 
    attributes_table do 
     row "Avatar" do |user| 
     "<img src='#{user.avatar_url}' alt='user avatar'/>".html_safe 
     end 
     row :uuid 
     row :twitter_id 
     row :facebook_id 
     row :allow_notifications do |user| user.allow_notifications ? "true" : "false" end 
     row :blocked do |user| user.blocked ? "true" : "false" end 
     row :created_at 
     row "Active Events" do |user| user.active_events.size end 
     row "Conversations" do |user| user.conversations.size end 
     row "Comments" do |user| user.comments.size end 
    end 
    active_admin_comments 
    end 


end 

Ich sehe nicht die notify_all Aktion überall auf der Seite Benutzer:

enter image description here

Die Strecke ist es aber. Muss ich die Indexansicht anpassen, um Sammlungsaktionen hinzuzufügen?

+1

Es ist eine Aktion, genau wie eine normale Controller-Aktion. Es wird nicht in einer Ansicht angezeigt, es sei denn, Sie stellen einen Link, Schaltfläche .. etc und gebunden, um die Aktion – Nimir

+0

ich sehe zu schießen. Ich begann zu denken, dass ich das tun musste. Rails lässt dich daran gewöhnen, Magie zu erwarten. : | – septerr

Antwort

12

Ja, Sie haben etwas in user.rb Config hinzufügen

action_item :only => :index do 
    link_to('Notify All', notify_all_admin_users_path) 
end 

Dies wird einen Link auf der Titelleiste neben New User Link

4

Sie müssen geändert Ihre AA user.rb Datei hinzufügen wie:

action_item do 
    link_to 'Notify All', admin_notify_all_path(path according to your routes) 
end 


collection_action :notify_all, :method => :post do 
    puts "notifying...." 
end 
Verwandte Themen