Rails管理员修改列表/显示视图以添加新/自定义列

Rah*_*arg 13 ruby-on-rails ruby-on-rails-3 rails-admin

我已经为我的网站的管理界面设置了rails_admin.

对于其中一个模型,我想显示一个额外的列.

说我的模型中有姓名,电话,电子邮件,图片网址,排名等属性(比如学生).然后我必须显示列:名称| 排名| 预览(附加栏目)

在预览列中,我想根据每个"学生"的属性(电子邮件,图像,网址等)显示一些渲染的html.

我找到了包含部分编辑/更新/创建的方式,以根据我们的部分提供字段/表单.但是包含partial的相同实现在list/show中失败了.

那么有什么方法可以添加部分显示渲染内容,在列表/显示视图中的模型...?

编辑:添加了代码

config.model Utility do
   list do
     field :code
     field :priority
     field :name
     field :url
     field :phone
     field :logo
     field :content
     sort_by :priority
     items_per_page 100
   end
end
Run Code Online (Sandbox Code Playgroud)

这会在rails_admin中显示以下列

代码| 优先| 名称| 网址| 电话| 标志| 内容

我想要的是 Code | 优先| 预习

在预览列中,我想将html呈现内容显示为:

blah.html(仅用于例如html,例如,我想以某种方式呈现它在一个页面中显示,因此它也适用于管理员视图)

<div class="blah">
  <%=util.name%> <%=util.phone%> <%=util.logo%> #usage with proper divs/tags/rendering
</div >
Run Code Online (Sandbox Code Playgroud)

Ben*_* B. 23

config.model Utility do
  configure :preview do
    pretty_value do
      util = bindings[:object]
      %{<div class="blah">
          #{util.name} #{util.phone} #{util.logo}
        </div >}
    end
    children_fields [:name, :phone, :logo] # will be used for searching/filtering, first field will be used for sorting
    read_only true # won't be editable in forms (alternatively, hide it in edit section)
  end



  list do
    field :code
    field :priority
    field :preview
  end

  show do
    field :code
    field :priority
    field :preview
  end

  # other sections will show all fields
end
Run Code Online (Sandbox Code Playgroud)

抽象:

显示/列表不使用部分输出.最后的重点是pretty_value.

  • 我必须在输出字符串中添加`.html_safe`以使其正确显示. (3认同)

Eva*_*van 7

Rails管理员调用这些"虚拟"字段类型.最简单的方法是在模型上创建一个方法,然后在列表/ show中引用它:

class ModelName < ActiveRecord::Base

  def invite_link
    %{<a href="http://site.com/#{self.uid}">invite link</a>}.html_safe
  end

  rails_admin do
    configure :invite_link do
        visible false # so it's not on new/edit 
    end

    list do
      field :name
      field :invite_link
    end

    show do
      field :name
      field :invite_link
    end
  end
end
Run Code Online (Sandbox Code Playgroud)