나는 Greetious를 Rails 3을 사용하여 실행하려고 시도하고 있지만 크로스가 문제가되었습니다.로케일 파일에서 도우미 메서드를 사용합니까?
이 줄이 보입니다.
<p><%= t("views.commits.message").call(self, tree_path(@commit.id)) %></p>
해당 로케일 라인은,이 다른 사람에 의해 호출되고있어, 람다 방법은 뷰 #call
사용하여 호출하고 있지 않은지이며 여기 [config/locales/en.rb
]
:message => lambda { |this, path| "This is the initial commit in this repository, " +
this.link_to("browse the initial tree state", path) + "." }
문제 같다 이는 this
이 self
이 아닌 것을 의미합니다.
this
은 views.commits.message
및 path
은 {:rescue_format=>:html}
을 포함한다. Gitorious 팀은 응용 프로그램 전체에서이 접근법을 사용했습니다. 즉, 양식 작업을하지 않고도 논리를 도우미 메서드로 옮길 수는 없습니다.
몇 가지 조사를했고 정확한 행에 대해 this 스레드를 발견했습니다.
이것은 문제의 원인입니다.
이것은 시스템에 i18n 보석이 설치되어 있음을 나타냅니다. 이 보석은 Gitorious와 호환되지 않습니다. Rubygems로 제거하면 문제가 해결됩니다.
i18n
을 제거하려고 시도했지만 bundle install
을 실행하면 다시 설치됩니다.
리팩터없이 700 줄 로케일 파일을 어떻게 해결해야합니까?
의 링크를 보간 할 수 있습니까? link_to를 사용할 수 있도록 번역에 현재 컨텍스트를 전달하는 것은 다소 미친 짓입니다! – tigrish
응용 프로그램의 모든't' 호출을 변경하는 것은 현실적이지 않습니다. – Oleander
** 모든 **'t' 호출은 생각할 수 없습니다. 단지 링크가있는 호출 일뿐입니다. : % = t : 'views.commits.message, : link => link_to (t ('views.commits.link '), : path => tree_path (@ commit.id) 다음과 같이 간단 할 수 있습니다 : <)) %> 다음 로케일 파일 : 는 엉 : 전망 : 커밋 : 메시지 : 링크 "이것은 초기이 저장소에, % {링크} 커밋이다": "초기 트리 상태를 찾아 " – tigrish