이 접근 방식을 공유해 주셔서 대단히 감사합니다. 제게는 매력처럼 작동합니다. 내가 할 수 있다면 투표 하겠지,하지만 이것은 내 첫 번째 게시물이므로 적절한 평판이 부족합니다 ... 퍼즐에 대한 추가 부분 : 귀하의 접근 방식에서 내가 깨달은 문제는 여전히 내부에서 작동하지 않는다는 것입니다. 컨트롤러. 나는 약간의 조사를했고 당신의 접근 방식 을 rubypond에 대한 Glenn 의 접근 방식과 결합 했습니다 .
내가 생각해 낸 것은 다음과 같습니다.
도우미보기 (예 : application_helper.rb)
def render_flash_messages
messages = flash.collect do |key, value|
content_tag(:div, flash_message_with_link(key, value), :class => "flash #{key}") unless key.to_s =~ /_link$/i
end
messages.join.html_safe
end
def flash_message_with_link(key, value)
link = flash["#{key}_link".to_sym]
link.nil? ? value : string_with_link(value, link).html_safe
end
# Converts
# "string with __link__ in the middle." to
# "string with #{link_to('link', link_url, link_options)} in the middle."
# --> see http://stackoverflow.com/questions/2543936/rails-i18n-translating-text-with-links-inside (holli)
def string_with_link(str, link_url, link_options = {})
match = str.match(/__([^_]{2,30})__/)
if !match.blank?
$` + link_to($1, link_url, link_options) + $'
else
raise "string_with_link: No place for __link__ given in #{str}" if Rails.env.test?
nil
end
end
컨트롤러에서 :
flash.now[:alert] = t("path.to.translation")
flash.now[:alert_link] = here_comes_the_link_path # or _url
locale.yml에서 :
path:
to:
translation: "string with __link__ in the middle"
보기에서 :
<%= render_flash_messages %>
이 게시물이 저에게 투표 할 수있는 명성을 얻길 바랍니다. holli :) 모든 피드백을 환영합니다.