I don't understand very good yet how it works rails_admin gem for create a new action.
I want create a action with name balance in rails_admin root.
I have created a file with name rails_admin_balance.rb inside myapp/lib folder like:
require 'rails_admin/config/actions'
require 'rails_admin/config/actions/base'
module RailsAdminBalance
end
module RailsAdmin
module Config
module Actions
class Balance < RailsAdmin::Config::Actions::Base
RailsAdmin::Config::Actions.register(self)
register_instance_option :object_level do
true
end
register_instance_option :link_icon do
'icon-eye-open'
end
register_instance_option :root? do
true
end
end
end
end
end
I have created a new file on /views/rails_admin/main/balance.html.erb
inside my rails_admin.rb
file I have
config.actions do
dashboard # mandatory
# collection actions
index # mandatory
new
export
history_index
bulk_delete
# member actions
show
edit
delete
history_show
show_in_app
balance
end
When I try run rails server I get this error:
Exiting
/home/ubuntu/Desktop/myapp/config/initializers/rails_admin.rb:33:in `block (2 levels) in <top (required)>': undefined method `balance' for RailsAdmin::Config::Actions:Module (NoMethodError)....
Where have I the error?
What am I doing bad?
Thank you very much!
I've had the exact same problem. I think it's because the rails_admin_[my_action].rb
file under /lib doesn't get loaded, and this is not documented in the rails_admin docs.
You can either try to load it from rails_admin.rb or just move all the code you have on
rails_admin_[my_action].rbto the
rails_admin.rb` initializer (paste it at the beginning of the file).
There is a third option (only if you don't want to reuse the action) which IMHO looks cleaner:
Get rid of the rails_admin_[my_action].rb
(your rails_admin_balance.rb
) and rewrite your actions inside rails_admin.rb
as follows:
config.actions do
dashboard # mandatory
# collection actions
index # mandatory
new
export
history_index
bulk_delete
# member actions
show
edit
delete
history_show
show_in_app
member :balance do
link_icon 'icon-eye-open'
root? true
end
end
Just add this on your rails_admin.rb
module RailsAdmin
module Config
module Actions
class Balance < RailsAdmin::Config::Actions::Base
RailsAdmin::Config::Actions.register(self)
end
end
end
end
Opening the Actions module on RailsAdmin scope avoids this particular error. And your definitions can stay on Balance module on lib.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With