Могу ли я предотвратить появление флэш-сообщения после вызова AJAX? - PullRequest
1 голос
/ 24 января 2012

У меня есть сайт, который изящно деградирует для пользователей без JavaScript.Для пользователя без javascript контроллер ответит на отправку формы с HTML.Для пользователя с javascript будет отправлена ​​форма AJAX.Это в методе создания в контроллере:

    if !@goal.save
      flash[:error] = array_to_list(@goal.errors.full_messages)
    else
      flash[:success] = "Your goal was successfully added."
    end      

    respond_to do |format|
        format.html { redirect_to :action => "show"}
        format.js
    end

Я не хочу помещать эти сообщения во флэш-память, если у пользователя включен javascript, потому что тогда он будет отображаться после того, как пользователь уже имеет с ним дело,Есть ли способ сказать Rails отображать флэш-сообщение только при ответе html?

1 Ответ

4 голосов
/ 24 января 2012

Вы можете поместить flash бит кода в свой блок format.html, чтобы достичь этого.

Может быть, что-то вроде этого:

@goal.save

respond_to do |format|
  format.html do
    if @goal.errors
      flash[:error] = array_to_list(@goal.errors.full_messages)
    else
      flash[:notice] = "Your goal was successfully added."
    end
    redirect_to :action => "show"
  end

  format.js
end

Задумывались ли вы о том, что вам может потребоваться какое-то сообщение об ошибке и с запросом AJAX? Это может быть хорошей идеей, если ваш AJAX-запрос прерывается по какой-то причине, чтобы материал не был сохранен.

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