Я использую Rails 2.3.8
У меня проблема с действиями, которые отображаются после ошибки в форме.
Итак, у меня есть posts
контроллер и обычные связанные действия, index
, new
, create
, edit
, update
и show
.
Вот действия с формами в PostsController
:
def new
@post = Post.new
# other setup
end
def create
if request.post?
@post= Post.new(params[:post])
# other setup for save
if @post.save
flash[:notice] = 'Post was successfully created.'
redirect_to campaign_path(@post, :redirect => "create")
else
render :action => 'new'
end
end
end
def edit
@post = Post.find(params[:id])
# other setup
end
def update
# setup for save
if @campaign.update_attributes(params[:post])
flash[:notice] = 'Your post was successfully updated.'
redirect_to :action=> "index"
else
render :action => "edit"
end
end
А вот и формы в видах
new.html.erb
<% form_for(@post, :html => {:multipart => true}) do |f| %>
<%= f.error_messages %>
# Form fields and stuff
<%= f.submit "Create New Post" %>
<% end %>
edit.html.erb
:
<% form_for(@post, :html => {:multipart => true}) do |f| %>
<%= f.error_messages %>
# Form fields and stuff
<%= f.submit "Update This Post" %>
<% end %>
Моя проблема : если я на странице new
и я делаю какую-то ошибку (например, оставляю поле пустым), представления, которые отображаются, отправляются в неправильное место. Так что, если я начинаю с new
и отправляю безуспешно кучу раз, он последовательно проходит через new
, затем create
, затем edit
, затем update
действия. Итак, поведение таково:
Начните создавать сообщение:
Действие: new
URI: /posts/new
Представлено: new
Успешная отправка отправляется на: show
Неудачная отправка отправляется на: create
После первой неудачной отправки:
Действие: create
URI: /posts
плохо?
Представлено: new
Успешная отправка идет по адресу: index
(это означает, что форма отправляется на действие update
, bad )
Неудачная отправка отправляется на: edit
плохо
После второй неудачной отправки:
Действие: edit
плохо , я не смогу попасть сюда с new
!
URI: /posts/[id]
Представлено: edit
плохо , я не смогу попасть сюда с new
!
Успешная отправка отправляется по адресу: index
через обновление
Неудачная отправка отправляется на: update
После третьей и последующих неудачных отправок:
Действие: update
плохо , я не смогу попасть сюда с new
!
URI: /posts/[id]
Представление выполнено: edit
плохо , я не смогу попасть сюда из new
!
Успешная отправка отправляется на: index
Неудачная отправка отправляется на: update
Буду признателен, если кто-нибудь укажет мне, что я делаю неправильно. Если вам нужна дополнительная информация, просто спросите.
Большое спасибо!