【问题标题】:How to pass controller params to Liquid filters?如何将控制器参数传递给液体过滤器?
【发布时间】:2023-03-24 14:50:02
【问题描述】:

液体:

asset = {{asset_url | 'screenshot.png'}}

查看:

<img src="{{asset_url | 'screenshot.png'}}" />

助手:

我解析如下:

Liquid::Template.parse(asset).render(asset, :filters => [TextFilter]).html_safe

text_filter.rb:

def asset_url(input)    
  AwsWrapper::S3Object.url_for("\[**asset_id**]\#{input}", [BUCKET_NAME])
end

我想知道如何将 [asset_id] 从视图传递到 text_filter,以便我将形成 url 以从 s3 获取图像

【问题讨论】:

    标签: ruby-on-rails-3 liquid


    【解决方案1】:

    任何参数都可以通过寄存器传递给过滤器。

    Liquid::Template.parse(asset).render(replace_objs, :filters => [TextFilter], 
    :registers => { :your_object => object }).html_safe
    

    text_filter.rb:

    def asset_url(input)    
      asset_id = @context.registers[:your_object].asset_id
      AwsWrapper::S3Object.url_for(#{asset_id}\#{input}", [BUCKET_NAME])
    end
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-14
      • 1970-01-01
      • 2018-07-14
      • 2014-06-06
      相关资源
      最近更新 更多