如何将控制器参数传递给Liquid过滤器?

时间:2014-07-23 10:41:30

标签: ruby-on-rails-3 liquid

液体:

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,以便我将形成从s3获取图像的网址

1 个答案:

答案 0 :(得分:0)

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

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