모델 별 플래시 메시지를 표시하는 부분 뷰가 있습니다. 부분 모양 같은 간단한 정규식을 사용하여 특정 접두어레일즈 - 생산시에만 "심볼을 문자열로 변환 할 수 없습니다"
앱 /보기/mymodel/_flashpartial.erb
<% flash.each do |key, value| %>
<% if model_key = myModelFlash(key) then %>
<%= content_tag(:div, value, :class => "flash #{model_key}") %>
<% end %>
<% end %>
myModelFlash
방법은 단순히 취하는 키를 체크한다. 그것은이 내 개발 및 테스트 환경에서 완벽하게 잘 작동
module MyModelHelper
def myModelFlash(key)
m = /^_mymodel_(.*)/.match(key)
m[1] unless m.nil?
end
end
응용 프로그램/헬퍼/mymodelhelper.rb에 위치하고 있습니다. Heroku에 도착하자마자 (ActionView :: Template :: Error) "Symbol을 String으로 변환 할 수 없습니다"라는 오류 메시지가 나타나 match
이라는 호출을 가리 킵니다.
보기에서 myModelFlash
에 대한 호출을 제거하고 간단하게 키와 값을 표시하면 오류가 발생하지 않는다는 점에서 문제가 없으므로 키와 값이 부분 뷰에 잘 들어갑니다. . 어떤 이유로 헬퍼 메소드는 전달되는 키가 기호가 아닌 문자열이라고 생각합니다.
왜 이런 일이 벌어지고있는가요?
키를 시도했습니다.to_s를 사용하지만 결과 문자열은 비어있어 일치하지 않습니다. 나는 도우미에게 키를 전달하기 전에 to_s를 시도하고 거기에서 일어나는 일을 보게 될 것이다. –
플래시에 다른 데이터가 들어 있습니다. 프로덕션 서버에서 플래시 내용을 디버그하고 테스트에서이 값을 사용하십시오. 이 경우 문제는 아마 구성 요소의 버전과 관련이 없습니다. – Arsen7
'model_key = myModelFlash (key.to_s)'를 사용하는 것은 언급했듯이 약간의 회피책입니다. 잠시 후 루비/젬 버전을 살펴보고 내가 무엇을 생각해 낼 수 있는지 알아 보겠다. –