Рельсы 3 помоста и и18н - PullRequest
       3

Рельсы 3 помоста и и18н

2 голосов
/ 01 февраля 2011

Когда леса в Rails 3, генератор делает это:

<% if @user.errors.any? %>
<div id="error_explanation">
  <h2><%= pluralize(@user.errors.count, "error") %> prohibited this user from being saved:</h2>

  <ul>
  <% @user.errors.full_messages.each do |msg| %>
    <li><%= msg %></li>
  <% end %>
  </ul>
</div>
<% end %>

А как же i18n? Сообщения переводятся, но почему заголовок в жестком коде? Я должен перевести это вручную? Это не кажется очень сухим?

С уважением,

Jacob

Ответы [ 2 ]

2 голосов
/ 05 февраля 2011

вы можете переопределить поведение по умолчанию для скаффолда, загрузив файлы здесь, на github и поместив их в lib/templates/erb/scaffold. Когда вы создаете скаффолд, он понимает, что шаблоны есть, и использует их.

<% this code is executed and probably result in html %>, <%% this is converted to snippet %>, это было не так сложно, и тогда вы можете выполнить все свои настройки, но автоматически сгенерировать файл yml может быть сложнее, в любом случае вы все равно можете сделать свои шаблоны почти автоматически.

Чтобы ответить на ваш вопрос, я тоже думаю, что scaffold можно улучшить, но я читаю везде, где разработчики предпочитают писать свой собственный код с нуля. Поэтому я думаю, что усилия направлены на улучшение других функций. Скаффолд остается, по крайней мере, полезным генератором для понимания и знакомства с логикой, когда вы начинающий.

0 голосов
/ 02 февраля 2011

Я думаю, что леса - это скорее подсказка, чем окончательный шаблон.

Вы можете добавить перевод, просто заменив "prohibited this user from being saved:" на t('my_message') и dding 'my_message: whatever' на en.yml. При добавлении перевода у вас нет повторений, и сухой принцип безопасен.

Просто оставим комментарий: я редко использую сообщение типа "4 ошибки запрещают сохранение этого пользователя" . По моему опыту, чаще всего просто перечислять все произошедшие ошибки и отображать неправильное поле красным цветом.

...