Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Active Admin: How to set page title?

This seems like it should be relatively simple, but I've had some trouble tracking down the answer:

How do you set the page title in ActiveAdmin?

like image 791
user456584 Avatar asked Jun 03 '13 20:06

user456584


4 Answers

Consolidating answers and adding a little:

Most of this is on this page on the wiki (or I'll put it there soon).

Within the file that registers your model for activeadmin (e.g. app/admin/user.rb), you can have

ActiveAdmin.register User do
  # a simple string
  index :title => "Here's a list of users" do
    ...
  end

  # using a method called on the instance of the model
  show :title => :name do
    ...
  end

  # more flexibly using information from the model instance
  show :title => proc {|user| "Details for "+user.name } do
    ...
  end

  # for new, edit, and delete you have to do it differently
  controller do
    def edit
      # use resource.some_method to access information about what you're editing
      @page_title = "Hey, edit this user called "+resource.name
    end
  end
end
like image 54
cesoid Avatar answered Nov 17 '22 13:11

cesoid


After searching got it,

You can add :title attribute to blocks of active admin.

e.g

1) To set title for index page,

index :title => 'Your_page_name' do
....
end

2) To set title for show page,

show :title => 'Your_page_name' do
....
end
like image 9
bunty Avatar answered Nov 17 '22 13:11

bunty


In case someone (like me) still struggles with action new:

def new
  @page_title="My Custom Title"
  super
end

Dont forget to add super. However, edit action doesnt need that.

like image 4
majtymit Avatar answered Nov 17 '22 13:11

majtymit


As per this post, you can use a line like the following in the action of choice:

@page_title="My Custom Title"

For example, to implement this in a pre-existing action like 'new', you would do something like this:

controller do
  def new do
    @page_title="My Custom Title"
    new! do |format|
       format.html{render "my_new"}
    end
  end
end
like image 3
user456584 Avatar answered Nov 17 '22 13:11

user456584