巩固答案并补充一点: 大部分内容都在this page on the wiki上(或者我很快会把它放在那里)。 在为activeadmin注册模型的文件(例如app/admin/user.rb)中,可以有
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
class Course < ApplicationRecord
has_many :lessons, dependent: :destroy
end
class Lesson < ApplicationRecord
belongs_to :course
end
我想在课程索引页中显示课程标题,我测试了两种方法。
仅用于索引
ActiveAdmin.register Lesson do
belongs_to :course, optional: true
permit_params :title
controller do
def index
@page_title = " #{Course.find(params[:course_id]).try(:title)}"
super
end
end
或用于所有操作
ActiveAdmin.register Lesson do
belongs_to :course, optional: true
permit_params :title
controller do
before_action {
@page_title = " #{Course.find(params[:course_id]).try(:title)}"
}
end
end
则可以使用@page_title
index :title=> @page_title do
selectable_column
id_column
column :title
actions
end
ActiveAdmin.register User do
controller do
before_action :page_title
# other controller stuff...
def page_title
@page_title = I18n.t(params[:action], scope: "active_admin.resources.user.page_title")
end
# other controller stuff...
end
end
en:
# other yaml stuff...
active_admin:
# more active_admin yaml stuff...
resources: # added this key for organizing the customization
# more resources...
user:
page_title:
index: Custom Index Title
new: Custom New Title
# other yaml stuff...
ActiveAdmin.register User do
controller do
before_action :page_title
# other controller stuff...
def action
params[:action].to_sym
end
def page_title
@page_title = page_titles_per_action[action]
end
def page_titles_per_action
@page_titles_per_action ||= { index: "Custom Index Title", new: "Custom New Title" }
end
# other controller stuff...
end
end
9条答案
按热度按时间raogr8fs1#
巩固答案并补充一点:
大部分内容都在this page on the wiki上(或者我很快会把它放在那里)。
在为activeadmin注册模型的文件(例如app/admin/user.rb)中,可以有
vdgimpew2#
经过搜寻得到了它,
您可以将:title属性添加到活动管理员块中。
例如,
1)设置索引页标题:
2)设置显示页标题:
gopyfrb33#
如果有人(像我一样)还在为
new
行动而挣扎:不要忘记添加
super
。但是,edit
操作不需要添加super
。k3fezbri4#
根据这篇文章,你可以在选择的操作中使用如下的行:
例如,要在预先存在的操作(如“new”)中实现此操作,您可以执行以下操作:
gpnt7bae5#
我的例子:
两个模型及其关联:
我想在课程索引页中显示课程标题,我测试了两种方法。
仅用于索引
或用于所有操作
则可以使用@page_title
0yycz8jy6#
如果我没猜错你的问题,你想在activeadmin中重命名一个模型,使其在所有操作中都以另一个名称出现,例如,在ActiveAdmin中重命名“Post”模型使其出现“Article”,要做到这一点,只需转到Admin文件夹中的模型文件,将第一行从
至
如果出了问题,重新启动你的Rails服务器、Docker或其他任何东西
im9ewurl7#
简单地做
cgh8pdjw8#
如果您正在使用
ActiveAdmin.register_page
并希望在顶部设置菜单名称和页面名称,请尝试以下操作:sc4hvdpw9#
还可以利用控制器操作来为更改页面标题给予更大的粒度,特别是在利用带有
before_action
的I18 n时,就像@dayudodo在Answer中所做的那样。I18 n方法
我已经按照ActiveAdmin文档的建议在本地复制了active_admin yml,以便可以对其进行修改以进行自定义
这样,您仍然可以利用I18 n注入的变量,假设您的控制器中有方法可以执行以下操作:
第一次
没有国际化
ActiveAdmin块中的常量违反了Ruby样式指南,并将引发liter错误:定义块中的常量。因此我们可以改为memoize