错误消息未显示在页面上

时间:2016-03-24 16:59:23

标签: ruby-on-rails ruby

我正在为我的rails应用程序进行验证,验证工作正常。但是,它仍显示成功消息,并且不显示错误消息。我确定我错过了一些简单的东西!这是我的代码。

def create
  @message = Message.create(message_params)
  if @message.send_at.blank?
    Person.in_groups(message_params[:group_ids]).each do |person|
      person.delay.send_message(@message.body)
      flash[:success] = "Messages on their way!"
    end
  else
    Person.in_groups(message_params[:group_ids]).each do |person|
      person.delay(run_at: @message.send_at).send_message(@message.body)
      flash[:success] = "Messages on their way!"
    end
  end
  redirect_to root_path
end

她是我的观点

<% if @message.errors.any? %>
  <ul>
    <% @message.errors.full_messages.each do |msg| %>
      <li><%= msg %></li>
    <% end %>
  </ul>
<% end %>

1 个答案:

答案 0 :(得分:0)

我通常采用的方式是:

def create
  @message = Message.build(message_params)
  if @message.save
    run_at_time = @message.send_at.present? ? @message.send_at : Time.zone.now
    people = Person.in_groups(message_params[:group_ids])
    if people.any?
      people.each do |person|
        person.delay(run_at: run_at_time).send_message(@message.body)
      end
      flash[:success] = 'Messages on their way!'
      redirect_to_root_path
    else
      flash[:danger] = 'No people to send messages to.'
      render 'new'
    end
  else
    flash[:danger] = 'There was an error with message creation.'
    render 'new'
  end
end

这样@ message.save将返回true或false,并且取决于它是否通过验证成功,您可以让它呈现表单,或重定向到root。

如果组中没有人发送消息,我还添加了一些代码来显示错误。与问题没有直接关系,但我注意到了这种可能性。

相关问题