2013-12-24 3 views
3

Rails Liquid Template 필터를 컨텍스트에 바인딩하고 싶습니다. |액체 템플릿 필터를 컨텍스트에 바인딩

{{ '있는 style.css를': 예를 들어

는, 나는 다음과 같이 사용하고자하는 'ASSET_URL'라는 필터를 가지고 있다고 ASSET_URL}}

그래서 같은 사용자 계정으로 당에 키 '있는 style.css'를 조회 할 수 있도록 ASSET_URL 필터를 싶습니다 내가 검색해야

https://somewhere.com/users/10/assets/style.css

공지 사항 user_id = 10에 대한 asset_url

Liquid 필터에 임의의 컨텍스트를 바인드/초기화하는 방법이 있습니까? 당신은 당신의 필터에 @Context 변수를 사용할 수 있습니다

+0

해결 방법을 찾으셨습니까? 오늘 아침에도 똑같은 일을하려고 노력 중입니다. – SirRawlins

답변

3

감사합니다, 특히 context.registers @ 해시.

는 레지스터 해시로 사용자를 전달합니다

@user = User.first 

@template = Liquid::Template.parse("{{ 'style.css' | asset_url }}") 
@template.render({}, registers: { user: @user }) 

를 필터에서 :

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 

도움이 되었기를 바랍니다.

관련 문제