我正在为我的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 %>
答案 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。
如果组中没有人发送消息,我还添加了一些代码来显示错误。与问题没有直接关系,但我注意到了这种可能性。