2

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はどうですか?メッセージは翻訳されますが、なぜハードコードされた見出しなのですか?私はそれを手動で翻訳することになっていますか?それはあまり乾燥していないようですか?

よろしく、

ジェイコブ

4

2 に答える 2

2

ここでgithubにファイルをダウンロードし、 emをに配置することで、scaffoldのデフォルトの動作をオーバーライドできますlib/templates/erb/scaffold。スキャフォールドを生成すると、テンプレートがそこにあることがわかり、それらを使用します。

<% this code is executed and probably result in html %>、、<%% this is converted to snippet %>それはそれほど難しくなく、すべてのパーソナライズを実行できますが、ymlファイルを自動的に生成するのは難しいかもしれませんが、とにかくテンプレートをほぼ自動的に実行できます。

あなたの質問に答えるために、私も足場を改善できると思いますが、開発者が独自のコードを最初から書くことを好むところはどこでも読んでいます。そのため、他の機能の改善に力を入れていると思います。Scaffoldは、初心者のときにロジックを理解して理解するために、少なくとも有用なジェネレーターであり続けます。

于 2011-02-05T01:59:25.513 に答える
0

足場は最終的なテンプレートよりもヒントだと思います。

に置き換え"prohibited this user from being saved:"て追加するだけで翻訳を追加したい場合があります。翻訳を追加すると、繰り返しはなく、ドライ原則は安全です。t('my_message')'my_message: whatever'en.yml

コメントはさておき、「4つのエラーがこのユーザーの保存を禁止しました」などのメッセージを使用することはめったにありません。私の経験では、発生したすべてのエラーを一覧表示し、間違ったフィールドを一種の赤で表示する方が一般的です。

于 2011-02-02T08:21:59.243 に答える