проблема с RESTful формами в Rails 3 - PullRequest
0 голосов
/ 12 мая 2011

хорошо, так что в основном у меня есть нормальная форма для моей модели:

= form_for @operator do |f|
blah blah blah

В моем контроллере операторов, у меня есть это:

def new
  @operator = Operator.new
  @operator.build_user

  respond_to do |format|
    format.html {}
  end
end

def create
  @user = User.create(params[:operator].delete(:user))
  @user.update_attributes(:login => @user.email)
  @operator = Operator.new(params[:operator].merge(:user => @user))

  respond_to do |format|
    if @operator.save
      format.html {redirect_to new_operator_aircraft_path(@operator)}
    else
      format.html { render :action => "new", :error => @operator.errors }
    end
  end
end

очень простой материал. У меня есть некоторые validates_presence_of вещи в моей модели, поэтому, естественно, когда я отправляю свою форму, она должна показать мне, что у меня есть ошибки (и сохранить заполненные поля)

Прямо сейчас? да уж. Проблема в том, что, похоже, я публикую в / операторах, и это то, что рендерится. Кажется, я забыл о том, что происходит в Rails2.3 +, но не должен ли я снова быть перенаправлен в / operator / new? или это было намеченное поведение все время?

1 Ответ

1 голос
/ 13 мая 2011

Вот что я думаю, вы спрашиваете:

После отправки формы с ошибками, почему URL читать "/ операторы", а не «/operators/new".

Благодаря ресурсоемкой маршрутизации при отправке формы через POST в "/ operator" вызывается действие create для OperatorsController. Если при сохранении вашего оператора вы столкнулись с ошибками, вы дали указание контроллеру выполнить новое действие в том же запросе.

render :action => "new", :error => @operator.errors

Это означает, что перенаправление не происходит, и поэтому URL остается "/ operator".

Если произойдет перенаправление, вы потеряете всю информацию о состоянии объекта @operator в текущем запросе, включая обнаруженные ошибки, а также значения формы, которые вы только что отправили.

Другими словами, работа по назначению.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...