Sau*_*ord 4 ruby templates ruby-on-rails liquid
我希望能够将 Rails Liquid Template 过滤器绑定到上下文。
例如,假设我有一个名为“asset_url”的过滤器,我想按如下方式使用它:
{{ 'style.css' | 资产网址 }}
我希望 asset_url 过滤器能够在每个用户帐户的基础上查找键“style.css”,如下所示:
https://somewhere.com/users/10/assets/style.css
请注意,我需要检索 user_id=10 的 asset_url。
有没有办法将任意上下文绑定/初始化到 Liquid 过滤器?
谢谢,
小智 5
您可以在过滤器中使用@context变量,特别是@context.registers哈希。
将您的用户传递到寄存器哈希中:
@user = User.first
@template = Liquid::Template.parse("{{ 'style.css' | asset_url }}")
@template.render({}, registers: { user: @user })
Run Code Online (Sandbox Code Playgroud)
在您的过滤器中:
module MyAssetFilter
def asset_url(value)
# @context.registers[:user] is available for use here
if asset = @context.registers[:user].assets.find_by(filename: value)
asset.filename
# etc...
end
end
end
Run Code Online (Sandbox Code Playgroud)
我希望这有帮助。