1

레일 3.0.3에서 i18n을 사용 중이며 사용자가 텍스트를 편집 할 수있는 기능이 있습니다. 사용자가 텍스트를 저장하면 en.yml 파일 대신 데이터베이스에서 가져옵니다.template.path_without_format_and_extension 레일 3.0.3에서 작동하지 않습니다. 정의되지 않은 메소드 템플릿 얻기

def c_t(key, options = {}) 
    c_key = (scope_key_by_partial_custom(key)).gsub(".","_") 
    if $LAYOUT_CONTENTS[c_key].present? 
     $LAYOUT_CONTENTS[c_key] 
    else 
     t(key,options) 
    end 
    end 

다음

def scope_key_by_partial_custom(key) 
    if key.to_s.first == "." 
    template.path_without_format_and_extension.gsub(%r{/_?}, ".") + key.to_s 
    else 
    key 
    end 
end 

내가보기에서이 방법을 호출하고 있습니다 : 그것은 레일 2.3에서 잘 작동했다

<h1 <%= c_t '.title' %></h1> 

을하지만 업그레이드 레일 후에 나는 재정 t 도우미 아래와 같이가 ~ 3.0.3 오류가 발생했습니다 클래스에 대한 정의되지 않은 메서드`template '

답변

1

레일에서이 도우미 메서드 사용 3

view_context.instance_variable_get(:@_virtual_path)