简体   繁体   中英

active admin how to render form on index page if object not created

I can't understand what I do wrong. My code won't work if subscription blank, but if I created it from rails c, all works fine...

# frozen_string_literal: true

ActiveAdmin.register Subscription do
  actions :index

  index do
    result = Subscriptions::GetPricing.call(admin: current_admin)
    if result.success?
      render partial: 'subscription_form', locals: { amount: result.plan.amount }
    else
      flash[:alert] = result.message
      render partial: 'subscription_errors'
    end
  end
end

Now i get: There are no Subscriptions yet. simple message. And i want left all styles, nav panel, etc how it default, but in container should be store my code from partials.

I think what you are trying to do is a bit wrong. index do block is to render the view level mainly. If you want to override controller action you will have to do it like below -

controller do
 def index
   # your code here
 end
end

Have a look at the documentation -

https://activeadmin.info/8-custom-actions.html

https://activeadmin.info/3-index-pages.html

If your intent is to display an input form if the table is unpopulated then try this:

controller do
  def index
    collection.size == 0 ? redirect_to(new_subscription_path) : super
  end
end

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM