Flash не отображает ошибку модели во время сохранения - PullRequest
0 голосов
/ 13 сентября 2018

Я не понимаю, почему моя флэш-память не отображается при попытке сохранить модель, содержащую ошибки проверки.

Мой контроллер имеет это в методе создания:

  if @post.save
    redirect_to admin_posts_path
  else
    render 'new'
  end

Myмакет имеет следующее:

<% flash.each do |message_type, message| %>
    <div class="alert alert-<%= message_type %>"><%= message %></div>
<% end %>

Теперь, если я добавлю инструкцию put для вывода ошибок в модели поста, я смогу увидеть их в своих журналах.

if @post.save
  redirect_to admin_posts_path
else
  puts "model errors are: #{@post.errors.inspect}"
  render 'new'
end

@messages = {: title => ["не может быть пустым"],: body => ["не может быть пустым"]}, @details = {: title => [{: error =>: blank}],: body => [{: error =>: blank}]}>

Почему ошибка флэш-памяти не отображается при попытке сохранить сообщение?Это явно не сохранение, и коллекция ошибок не пуста.

Разве ошибки модели не добавляются во флэш-память автоматически?

1 Ответ

0 голосов
/ 13 сентября 2018

Вы, кажется, путаете проверки моделей и флэш-память, которые полностью отделены друг от друга, или, по крайней мере, подразумеваете соединение, которого там нет.

Flash - это простой механизм, основанный на сеансах, для передачи сообщений последующим запросам.Ничего не добавляется во флеш-память автоматически в Rails *.

Ошибки модели создаются валидациями в модели и не являются постоянными между запросами.Скорее вы просто просматриваете их в представлении в ответ на отправку формы.

<% if @model.errors.any? %>
<ul>
  <% @model.full_messages.each do |m| %>
    <%= content_tag :li, m %>
  <% end %>
</ul>
<% end %>

Это делается в том же запросе.Вот почему вы не перенаправляете в Rails, когда проверки не пройдены.

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