在自定义页面中渲染自定义编辑部分'在ActiveAdmin中

时间:2014-10-07 20:48:53

标签: ruby-on-rails activeadmin

我正在使用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页而没有成功!!

5 个答案:

答案 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)

  

确定要使用的布局。

     
      
  1. 如果我们要呈现标准的Active Admin操作,我们需要布局(false)      因为这些操作是Base页面的子类(实现      所有必需的布局代码)
  2.   
  3. 如果我们要渲染自定义操作,我们会使用active_admin布局      用户可以在Active Admin中呈现任何模板。
  4.   

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/

您的部分现在应该在该活动管理页面上呈现。