如何在活动管理员中添加自定义成员操作的视图?

时间:2014-12-15 08:03:16

标签: ruby-on-rails ruby ruby-on-rails-4 activeadmin

我必须为自定义操作添加视图,该视图是成员操作,并且希望在其上显示关联记录。有没有办法添加自定义视图,而不是只在管理员的视图文件夹中添加html.erb?

我不想添加或创建html文件,而是使用活动的管理员帮助程序。

4 个答案:

答案 0 :(得分:3)

成员操作除了控制器操作之外什么都没有,这意味着你可以在其中执行相同的操作。

你可以使用想法:

render text: "Hello world!"

或者如果你想要一个复杂的标记:

message1 = "Hello"
@message2 = "world!"
view = Arbre::Context.new(message: message, self) do
  h1 do
    span message
    span @message
  end
end
render body: view.to_html # or .to_s

答案 1 :(得分:0)

您可以将以下代码用于 rails 4.1

的渲染html
render html: '<html><body>Some body text</body></html>'.html_safe ## Add html_safe

但是,如果您使用 rails 4.2 ,那么您可以使用以下内容:

render text: '<html><body>Some body text</body></html>'

我认为以下answer对您的问题非常有用。

答案 2 :(得分:0)

最后在admin / user / messages.html.erb中的html.erb文件中添加以下内容

<% view = Arbre::Context.new({messages: @messages, user: @user}, self) do

      panel "Sent Messages" do
        paginated_collection(messages, download_links: false) do
          table_for collection do
            column :id
            column :content            
          end
        end
      end
    end
%>

<%= view.to_s %>

答案 3 :(得分:0)

根据您的命名空间(在我的情况下,ActiveAdmin位于/admin),您可以像处理其他应用程序一样创建文件夹app/views/admin

例如,如果您有资源User和操作apply_discount

ActiveAdmin.register User do
  member_action :apply_discount, method: [:get, :put] do
    if request.get?
      render :apply_discount
    else
      # TODO ...
    end
  end    
end

您可以将ARBRE视图文件放入app/views/admin/users/apply_discount.html.arb - &gt;注意扩展名是ARB,而不是ERB - 尽管ERB也应该工作according to the docs