私はEntryモデルとPhotoモデルを持っています。各写真について、ユーザーは「エントリー」を提出することができます。各写真のショーページで、私はエントリーの完全なフォームをレンダリングします。私は300個の以上の単語があるエントリをテストする場合Rails 3にエラーメッセージが表示されない
validate :count_words
def count_words
body_size = body.to_s.scan(/[\w-]+/).size
unless body_size < 300
errors.add(:entry, "Your entry is too long")
end
end
、保存が失敗し、私のコントローラは、彼らが1だったページに戻ってリダイレクトします。私のentry.rb
ファイルでは、私はエントリの言葉をカウントするには、次のように持っています。 2つの問題。コントローラーのリダイレクト時に最初のエラーメッセージが表示されません。私はこれをフォームと一緒にレンダリングしました(それは足場によって生成されました)。
<% if @entry.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(@entry.errors.count, "error") %> prohibited this entry from being saved:</h2>
<ul>
<% @entry.errors.full_messages.each do |msg| %>
<li><%= msg %></li>
<% end %>
</ul>
</div>
<% end %>
これは、私は問題がある疑いがあるコントローラのアクション、次のとおりです。私は、問題がどこにあるかはかなりよく分からない
def create
@entry = Entry.new(params[:entry])
respond_to do |format|
if @entry.save
format.html { redirect_to(@entry, :notice => 'Your entry was submitted.') }
else
format.html { redirect_to :back }
end
end
end
。私は提出前に検証するためにフォーム上にいくつかのjavascriptを実装するつもりですが、バックアップとしてこれをしたいと思います。誰かが私が間違っていることを教えてもらえますか?