Railsはモデル内の属性を検証する新しい方法を導入しました。私が使うとき
validates :title, :presence => true
動作しますが、カスタムメッセージを追加しようとすると
validates :title, :presence => true,:message => "Story title is required"
エラーが発生する
Unknown validator: 'message'
Railsはモデル内の属性を検証する新しい方法を導入しました。私が使うとき
validates :title, :presence => true
動作しますが、カスタムメッセージを追加しようとすると
validates :title, :presence => true,:message => "Story title is required"
エラーが発生する
Unknown validator: 'message'
回答:
これを試して
validates :title, presence: { message: "Story title is required" }
=> true
この答えはどこに行ったのですか?必要ありませんか?
presence
ます。
:base
に追加することにより、メッセージから属性名を削除できますerrors.add(:base, "Story title is required)
実際、私はこれをより良い方法で行いました。メッセージからフィールドタイトルを削除する場合は、_form.htmk.erbビューでこれを使用する必要があります。
このビューの内部を見るとわかるように、
<ul>
<% @article.errors.full_messages.each do |msg| %>
<li><%= msg %></li>
<% end %>
</ul>
それを次のように置き換えます。
<ul>
<% @article.errors.each_with_index do |msg, i| %>
<li><%= msg[1] %></li>
<% end %>
</ul>