Rails 3 - Проверка ошибок на вложенном ресурсе
-
25-09-2019 - |
Вопрос
Я действительно изо всех сил пытаюсь справиться с обработкой ошибок в рельсах 3. Я взломал некоторые идеи, которые могли бы работать, но предпочли бы сделать это правильным образом. Если кто-то может помочь или дать руководство, я буду признателен за это. Вот что у меня так далеко
Itemcontroller.
def show
@item = Item.find(params[:id])
@note = @item.notes.new
respond_with(@item)
end
Несущественный
def create
@note = @item.notes.build(params[:note])
flash[:notice] = 'Your note was successfully added!' if @note.save
respond_with(@item)
end
Предметы / 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 и это оказывает ошибки
Решение
Если вы перенаправите, вы потеряете все сообщения об ошибках. Вам нужно сделать вид, вместо перенаправления, если ваш объект недействителен и не сохраняет. Я не уверен, что еще не уверен, что из лучших способов сделать это в Rails3 с методом RESP_WITH, но если вы посмотрите на рельсы на лесах3, вы видите, как обработка не удалось сохранять работы.
respond_to do |format|
if @post.save
format.html { redirect_to(@post, :notice => 'Post was successfully created.') }
format.xml { render :xml => @post, :status => :created, :location => @post }
else
format.html { render :action => "new" }
format.xml { render :xml => @post.errors, :status => :unprocessable_entity }
end
end