rails 3, приложение scaffolded, как добавить собственное сообщение об ошибке для обновления метода? - PullRequest
0 голосов
/ 06 февраля 2011

В скаффолдинговом Rails 3, когда не удается сохранить метод update, логика уже существует для перенаправления обратно на страницу редактирования.

мы модифицировали метод scaffolded для выполнения некоторой пользовательской логики проверки (после обновления, но до того, как мы отобразим результирующее представление

respond_to do |format|
  if @thingy.update_attributes(params[:thingy])
      if @thingy.found_warning_101

           WHAT GOES "HERE" TO REDIRECT TO EDIT PAGE
           AND HAVE THE DEFAULT SCAFFOLDING ERROR HANDLING SHOW "WARNING 101"?
           THIS DOES NOT WORK, GIVES MISSING VIEW ERROR, DOESNT FIND EDIT VIEW:

           format.html { render :action => "edit", :notice => "WARNING 101" }
           format.xml  { render :xml => @things.errors, :status => :unprocessable_entity }
           return

      end

    format.html { redirect_to(@thingy, :notice => "thingy was successfully updated.") }
    format.xml  { head :ok }
  else
    format.html { render :action => "edit" }
    format.xml  { render :xml => @beep.errors, :status => :unprocessable_entity }
  end

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

Missing template thingys/update with {:handlers=>[:erb, :rjs, :builder, :rhtml, :rxml, :haml, :voice], :formats=>[:html], :locale=>[:en, :en]} in view paths 

1 Ответ

1 голос
/ 06 февраля 2011

Я не очень понимаю, почему вы хотите сделать это, в любом случае, вот способ достичь этого:

@thingy.errors[:base] << "whatever text you want"

У тебя контроллер конечно.

Кстати, отсутствующий шаблон выглядит как update, а не edit

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