Comments (14)
The best way is to use the "member_action" and "collection_action" methods. I am in the process of writing the docs for them right now. Until then, this should do:
ActiveAdmin.register Post do
# Available at /admin/posts/1/approve and #approve_admin_post_path(post)
member_action :approve, :method => :post do
# Just a regular controller method in here
post = Post.find params[:id]
post.approve!
redirect_to admin_post_path(post)
end
# The exact same api is available for collection actions
# Available at /admin/posts/some_collection and #some_collection_admin_posts
collection_action :some_collection
end
Checkout the methods in the DSL at https://github.com/gregbell/active_admin/blob/master/lib/active_admin/dsl.rb#L118
from activeadmin.
To get the layout in your view it's also nice having this:
render "name_of_your_template", :layout => "active_admin"
It's not valid with a partial, only with a template, as far as I know.
from activeadmin.
Woooooooo... worked perfectly. No need for routes. Awesome again.
from activeadmin.
Oh, nice! This is just what I was looking for :)
from activeadmin.
I've added a member action similar to the above example, however it doesn't include a redirect.
The action renders fine, except for it has no layout; has anyone had this problem? If so, how did you overcome it?
from activeadmin.
Hi, I also don't get the layout. Have you solved this issue?
from activeadmin.
Not solved, but hacked into existence with the following:
# app/config/initializers/active_admin.rb
require 'inherited_views'
module ActiveAdmin
class ResourceController < ::InheritedViews::Base
protected
def renderer_for(action)
if %w(index new create edit update destroy show).include?(action.to_s)
ActiveAdmin.view_factory["#{action}_page"]
else
ActiveAdmin.view_factory["abstract_page"]
end
end
end
module Views
module Pages
class AbstractAction < Base
def title
params[:action].to_s.titleize
end
def main_content
render(params[:action])
end
end
end
end
class ViewFactory < AbstractViewFactory
register :abstract_page => ActiveAdmin::Views::Pages::AbstractAction
end
end
If, for example, you had a member action called preview
on a Post
resource, you would create a corresponding action template with the html.arb
extension:
# app/views/admin/posts/preview.html.arb
render renderer_for(:preview)
This will render the AbstractPage
view factory which will, in turn, render a preview
partial.
You can then create this partial (erb, arb, haml, whatever) and fill it with the approriate content.
This is by no means a sustainable way to do things, but it seems to work.
from activeadmin.
It would be nice if member_action
also added an action to the default_actions
in the index :P
from activeadmin.
i agree with zequez
from activeadmin.
I have something like this
member_action :blow, :method => :post do
puts "$"*30
puts "Doing something!"
puts "$"*30
redirect_to admin_cluster_path, notice: "Did you notice that?!"
end
However the route is not added of the resource and I get the following error:
Routing Error
No route matches [GET] "/backend/admin/clusters/12345/blow"
from activeadmin.
@IslamAzab There is no route for the get
verb on that action. There is a route for post
on that action. If you're using a link, I might suggest using :method => :put
and making sure you add the :method => :put
option on your link_to
.
from activeadmin.
@shekibobo Oh, my bad. What you've suggested will work just fine. Thanks!
from activeadmin.
thank you @gregbell
from activeadmin.
How to authorize member_action and collection_action?
from activeadmin.
Related Issues (20)
- ransack never receives an auth object HOT 1
- Unexpected behavior of form when trying to add raw html in the admin page form
- Is there a way to add expand/collapse method to has_many inputs in form
- ActiveAdmin - Error on boot HOT 1
- undefined method `to_ary` for Enumerator (Rails 7.1.1 & Activeadmin 3.1.0) HOT 4
- index columns / show rows
- `contains` filter no longer working HOT 1
- Update action does not call `authorize_resource!` after assigning attributes HOT 10
- uninitialized constant InheritedResources::Base (NameError) HOT 1
- Filtering on associations does not use the foreign_key when defined HOT 3
- Uninitialized constant `Devise::SessionsController` when extending controller HOT 1
- Rails 7.1.2 compatibility HOT 1
- InvalidAuthenticityToken Can't verify CSRF with rails 7.1.2.
- v4 beta 3: Kaminari translation override may affect the host application HOT 2
- v4 beta 3: External CDNs do not play well with CSP and may be a problem for intranet apps HOT 2
- Defining Actions in Index as a Table (4.0.0.beta3) HOT 3
- after_save called even if validation fails HOT 5
- 4.0.0.beta4 nesting in menus HOT 6
- Indentation broken for nested lists HOT 1
- No access to routes helpers from ActiveAdmin views [v4.0.0.beta5] HOT 8
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from activeadmin.