ruby 在rails_admin中渲染自定义pretty_value

5gfr0r5j  于 2023-04-20  发布在  Ruby
关注(0)|答案(1)|浏览(101)

我试图呈现自定义输出为formatted_value上显示页面.这就是我有:

register_instance_option :formatted_value do
    data_modules.map do |dm|
      dm_value = value[dm.name].presence || {}
      dm.fields.map do |field|
        dm_field_value = dm_value[field.name].presence || ''
        "#{field.label}: #{dm_field_value}"
      end
    end.flatten.join(", ")
  end

data_modules是models,它包含了一些关于我应该渲染哪些字段的信息,所以我只渲染用户在data_modules中拥有的字段。不需要理解算法是什么,我们只需要"#{field.label}: #{dm_field_value}"行。所以现在我变成了一个带key的字符串:值项,但我希望至少渲染新行中的每个项。dm_field_value可能是jsonb值,我希望它prettify为。
我已经尝试了“/n”和新行的符号。
也尝试创建数组
标签并将其呈现为bindings[:view].tag(:div,〈array of p`s〉),但没有运气。bindings[:view]将是理想的情况,我可以用它做任何我想做的事情。(样式,任何标签)
尝试将其呈现为单独的partial,但我需要访问data_modules。
如何使用pretty_value和bindings[:view].tag来实现?

zour9fqk

zour9fqk1#

解决方案是使用绑定的render方法[:view]。可以在:pretty_value字段中使用自定义partial,并通过局部变量将参数传递给partial。整个解决方案看起来像这样:

bindings[:view].render partial: '<my_partial>', locals: { data_fields: content }

它允许做任何我想要的逻辑,并将任何数据传递给partial,然后呈现任何haml或erb html。

相关问题