Выдача исключения в Вашем случае прекрасна. Можно считать случай истинным исключением, потому что что-то пытается установить целое число на строку (например). Отсутствие бизнес-правил knowledege Ваших представлений означает, что они должны считать этот случай исключительным и возврат что назад к представлению.
, Проверяете ли Вы свои входные значения перед отправкой их до бизнес-слоя ваше дело, я думаю, что, пока Вы следуете тому же стандарту всюду по своему приложению тогда, Вы закончите с чистым и читаемым кодом.
Вы могли использовать пружинную платформу, как определено выше, просто быть осторожными, такое количество связанного документа указывало на код записи, который не со строгим контролем типов, Т.Е. можно получить ошибки во время выполнения, когда Вы не могли взять во время компиляции. Это - что-то, что я стараюсь избегать как можно больше.
способ, которым мы делаем это здесь в настоящее время, состоит в том, что мы берем все входные значения с экрана, связываем их с моделью данных, возражают и выдают исключение, если значение по ошибке.
Я обычно добавляю имя локали в каждый путь или в имя изображения. В первом случае создайте разные папки для разных языков
/public/images/en/file.png
/public/images/it/file.png
image_tag("#{I18n.locale}/file.png")
Во втором случае
/public/images/file.it.png
/public/images/file.en.png
image_tag("file.#{I18n.locale}.png")
я обычно предпочитаю второе решение, потому что есть много ресурсов, которые мне не нужно локализовать, и мне часто нужно сохранить переведенные / общие ресурсы в те же папки, чтобы воспользоваться шаблоном «конвенция над конфигурацией».
В недавнем приложении я впервые с некоторым успехом попробовал переводы i18n, хотя код может быть немного беспорядочным.
В application_controller у меня есть:
class ApplicationController < ActionController::Base
before_filter :set_locale
AVAILABLE_LOCALES = I18n.backend.available_locales
private
##########
# Internationalisation
# For more information see http://guides.rubyonrails.org/i18n.html
# Additional locale starting points can be found here http://github.com/svenfuchs/rails-i18n/tree/a0be8dd219ccce6716955566ee557cc75122cb33/rails/locale
def tld
domain_array = request.subdomains.split(".")
domain_array[0] == "www" ? domain_array[1].to_s : domain_array[0].to_s
end
def available_locales
AVAILABLE_LOCALES
end
def set_locale
I18n.locale = extract_locale_from_subdomain
end
def extract_locale_from_subdomain
(available_locales.include? tld.to_sym) ? tld : nil unless tld.blank?
end
end
Это в основном выглядит выберите соответствующий язык из указанного субдомена, поэтому http://en.mysite.com на английском языке, а http://it.mysite.com на итальянском.
] Затем ваши представления, в которых вы просто используете:
<%= t(:click_to_edit) %>
Наконец, в config / locales создайте файл en.yml с необходимыми переводами:
en:
admin_menu: "Admin Menu"
Arabic: "Arabic"
back: "Back"
Basque: "Basque"
blogs: "Blogs"
blog_list: "Blog List"
blogroll: "Blogroll"
Итальянский файл содержит:
it:
admin_menu: "Menu Amministrazione"
Arabic: "Italian Arabic"
back: "Indietro"
Basque: "Italian Basque"