我试图呈现自定义输出为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来实现?
1条答案
按热度按时间zour9fqk1#
解决方案是使用绑定的render方法[:view]。可以在:pretty_value字段中使用自定义partial,并通过局部变量将参数传递给partial。整个解决方案看起来像这样:
它允许做任何我想要的逻辑,并将任何数据传递给partial,然后呈现任何haml或erb html。