在 rails 视图条件语句中使用呈现的 JSON

Using rendered JSON in rails view conditional statement

我有一个 returns json 的 jbuilder 视图,它在局部动态呈现。 json 属性之一称为 in_list,它是一个布尔值。我想根据该布尔值有条件地呈现一个按钮。看起来布尔值被呈现为字符串,但即使考虑到这一点,条件也永远不会起作用。如果我将 in_list 属性呈现为按钮标签上的文本,我可以看到它确实显示 TrueFalse 正确,但是在条件中使用时,它不起作用.

代码:

.text-center.product_picker_controlls
    - if '{raw-in_list}' == 'true'
        = button_tag 'ADDED', type: 'submit', class: 'btn btn-danger btn-lg t03e', id: 'product-{raw-product_id}'
        -# %a.btn.btn-primary.btn-lg.t03e{ href: "#{products_path( list_id: args[:list].try(:id) || '0', success: 'back' )}&u={raw-id}", data: { method: :post } }
            ADDED
    - else
        = button_tag 'ADD', type: 'submit', class: 'btn btn-primary btn-lg t03e', id: 'product-{raw-product_id}'
        -# %a.btn.btn-primary.btn-lg.t03e{ href: "#{products_path( list_id: args[:list].try(:id) || '0', success: 'back' )}&u={raw-id}", data: { method: :post } }
            ADD

在更仔细地检查代码时,我发现有一个 javascript 文件用正确的值替换了 {raw-attribute} 的所有实例,所以这个 DOM 操作没有达到雇员再培训局本身。我的解决方案是将按钮文本和按钮 class 直接添加到 JSON 本身,然后在 HAML 中添加这些属性。

在jbuilder文件中新增json:

json.in_list @list.list_items.where(product_id: product[:product_retailer].try(:product_id)).exists? ? 'ADDED' : 'ADD'
json.button_class @list.list_items.where(product_id: product[:product_retailer].try(:product_id)).exists? ? 'btn-danger' : 'btn-primary'

新火腿:

.text-center.product_picker_controlls
    = button_tag '{raw-in_list}', type: 'submit', class: 'btn btn-lg t03e {raw-button_class}', id: 'product-{raw-product_id}'
    -# %a.btn.btn-primary.btn-lg.t03e{ href: "#{products_path( list_id: args[:list].try(:id) || '0', success: 'back' )}&u={raw-id}", data: { method: :post } }
        '{raw-in_list}'