我正在使用ActiveAdmin进行项目。我有一个部分自定义表格。我希望能够在用户点击按钮时呈现此自定义表单,这就是我所做的:
ActiveAdmin.register_page "Messages" do
menu priority: 5
welcome_message = Template.first
page_action :update, method: :put do
#update code
end
page_action :edit, :method => :get do
render partial:'custom_form', locals: { settings: welcome_message }
end
action_item do
link_to "Edit", admin_welcome_messages_edit_path, :method => :get
end
content do
render text: "HI"
end
end
这很有效,但问题是我的表单在没有ActiveAdmin的布局和样式的情况下呈现,它只是将我的custom_form
显示为一个干净的html。
如果我在custom_form
中呈现我的content do ... end
它确实有效,但我需要它来展示不同的东西。
任何帮助?我不知道还有什么可以尝试,我已经达到google的前3页而没有成功!!
答案 0 :(得分:4)
有点老问题,但我遇到了同样的问题,这为我解决了。
render partial: "name_of_your_partial", layout: "active_admin"
我也没有为我工作所以我只是将我的部分改为模板。
render: "name_of_your_template", layout: "active_admin"
现在正在显示activeadmin布局。
答案 1 :(得分:3)
我没有找到答案,但我找到了一个看起来很不错的好方法。
在action_item
我有admin_welcome_messages_path
的链接,这是主视图,如果我正在编辑,请在那里添加一个参数来显示表单而不是正文。
希望它有所帮助!
ActiveAdmin.register_page "Messages" do
menu priority: 5
welcome_message = Template.first
page_action :update, method: :put do
#update code
end
action_item do
link_to "Edit", admin_welcome_messages_path(edit: true), :method => :get
end
content do
if params["edit"] == "true"
render partial:'form', locals: { settings: welcome_message }
else
render partial:'body'
end
end
end
答案 2 :(得分:0)
为渲染调用添加布局选项。
render partial:'custom_form', layout: 'active_admin', locals: { settings: welcome_message }
答案 3 :(得分:0)
确定要使用的布局。
- 如果我们要呈现标准的Active Admin操作,我们需要布局(false) 因为这些操作是Base页面的子类(实现 所有必需的布局代码)
- 如果我们要渲染自定义操作,我们会使用active_admin布局 用户可以在Active Admin中呈现任何模板。
醇>
https://github.com/activeadmin/activeadmin/commit/ce0927661c5991cc857306363c402ef9e283cc42
# this would automatically render the custom_edit.html.erb view
page_action :custom_edit do
end
action_item do
link_to "Custom Edit", admin_welcome_messages_custom_edit_path
end
答案 4 :(得分:0)
我意识到这是一个老问题,但以下对我的Ruby on Rails应用程序起了作用:
在your_custom_page.rb
文件中,执行以下操作
content do
render 'partial_name'
end
并将_partial_name.erb
放入view/admin/your_custom_page/
您的部分现在应该在该活动管理页面上呈现。