Flash-сообщения не отображаются при использовании 'render' после отправки формы - PullRequest
0 голосов
/ 07 февраля 2012

У меня проблемы с отображением флеш-сообщения после неудачной отправки формы.

Вот форма:

<%= form_for @question do |q| %>

  <p>
    <b>Your question</b><br />
    <%= q.text_field :title, :size => 48 %>
  </p>
  <p>
    <b>Add more details</b><br />
    <%= q.text_area :body, :size => "80x10" %>
  </p>
  <p>
    <%= q.submit %>
  </p>
<% end %>

И это часть контроллера, обрабатывающая его:

def create
    @question = current_user.questions.build(params[:question])
    if @question.save
      redirect_to questions_path, :flash => { :success => "Your question was saved!" }
    else
      flash.now[:alert => "There was a problem when trying to save your question!"]
      render 'new'
    end
  end

Файл шаблона для действия new не содержит ничего, кроме приведенной выше формы.

В настоящее время я использую этот фрагмент кода (в application.html.erb) для отображения флэш-сообщений, и онработает для флеш-сообщения после успешного сохранения и перенаправления на index:

  <% flash.each do |k, v| %>
      <div class="<%= k %>"><%= v %></div>
  <% end %>

Я не смог найти решение этой проблемы сам, поэтому я надеюсь, что более опытная пара глазсмогу сэкономить, как я полагаю, всего несколько минут, чтобы просветить меня.

Спасибо!

PS: Я также попробовал обычный flash[:key => "value"], а также render 'new', :flash => {:alert => "There was a problem when trying to save your question!"}

1 Ответ

5 голосов
/ 07 февраля 2012

Я считаю, что под этим:

flash.now[:alert => "There was a problem when trying to save your question!"]

Вы имели в виду:

 flash.now[:alert] = "There was a problem when trying to save your question!"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...