Rails 3でエラー処理を処理する方法に本当に苦労しています。うまくいく可能性のあるいくつかのアイデアをハッキングしましたが、適切な方法で処理したいと考えています。誰かが助けたり指導したりできるなら、私はそれをいただければ幸いです。これが私がこれまでに持っているものです
ItemController
def show
@item = Item.find(params[:id])
@note = @item.notes.new
respond_with(@item)
end
NoteController
def create
@note = @item.notes.build(params[:note])
flash[:notice] = 'Your note was successfully added!' if @note.save
respond_with(@item)
end
items / show.html.erb
<%= form_for ([@item, @note]), :html => {:id => 'form-add-item-note'} do |f| %>
私が試してみました
<%=f.error_messages%>
<%=error_messages_for :note%>
<%=error_messages_for :item,:note%>
エラーを処理するためのテンプレートもあります
<%= render "global/error_messages", :target => @item %>
を含む
<% if target.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(target.errors.count, "error") %> prohibited this record from being saved:</h2>
<ul>
<% target.errors.full_messages.each do |msg| %>
<li><%= msg %></li>
<% end %>
</ul>
</div>
<% end %>
リダイレクトでエラーが失われていると思いますが、メモの作成で失敗した保存からアイテムコントローラーをリダイレクトまたはレンダリングする方法を完全に理解できないようです。エラーのグローバルテンプレートを渡せるようにしたいと思います。 @noteとそれはエラーをレンダリングします