如何在.liquid文件中正确拼接section.id与form_class变量为class值?
解决Liquid {% form %}标签中class属性的变量拼接问题
你遇到的问题是因为在Liquid标签的参数字符串里,直接使用{{ }}插值不会被正确解析——Liquid在处理标签参数时,需要用它内置的字符串插值语法来处理变量。这里有两种简单有效的解决办法:
方法1:使用{% capture %}捕获拼接后的class值
先把需要的class组合用capture标签存到一个变量里,再在{% form %}中引用这个变量:
{% capture product_form_classes %}product-form-{{ section.id }} {{ form_class }}{% endcapture %} {% form 'product', product, data-productid: product.id, id: form_id, data-section: section.id, class: product_form_classes %} <!-- 表单内容 --> {% endform %}
这种方式直观易懂,适合需要复杂组合的场景,后续如果要调整class组合,直接修改capture里的内容就行。
方法2:使用Liquid的字符串插值语法#{}
在{% form %}的class参数中,直接用#{变量名}的方式在字符串内插值变量:
{% form 'product', product, data-productid: product.id, id: form_id, data-section: section.id, class: "product-form-#{section.id} #{form_class}" %} <!-- 表单内容 --> {% endform %}
这是Liquid原生的字符串内插值方式,能直接在双引号包裹的参数里解析变量,写法更简洁。
两种方法都能解决你当前的问题,选哪种看你的代码习惯就行~
内容的提问来源于stack exchange,提问作者Piotr Nevzorov
相关产品推荐
相关产品推荐

