ray*_*ley 16 error-handling ruby-on-rails
所以我在一个名为add_equip的预留模型中有一个方法.此方法会进行一些检查以确保添加的设备有效(不与其他预留冲突).
检查工作.如果不添加添加的设备,则不应添加,如果应该添加.
问题是我无法弄清楚如何将消息发送回控制器以放入闪存消息中?我知道我必须在这里遗漏一些东西,但我现在用Google搜索了几个小时,并且无法找到任何明确的解释如何将错误传递回控制器,除非它们是验证错误.
在reservations_controller中添加add_equip
    def add_equip
    @reservation = Reservation.find(params[:id])
    @addedEquip = Equip.find(params[:equip_id])
    respond_to do |format|
     if @reservation.add_equip(@addedEquip)
        flash[:notice] = "Equipment was added"
        format.html { redirect_to(edit_reservation_path(@reservation)) }
     else
        flash[:notice] = @reservation.errors
        format.html { redirect_to(edit_reservation_path(@reservation)) }
     end
    end
  end
add_equip在预订模型中
def add_equip equip
   if self.reserved.find_by_equip_id(equip.id)
     self.errors.add_to_base("Equipment Already Added")
     return false
   elsif !equip.is_available?(self.start, self.end)
     self.errors.add_to_base("Equipment Already Reserved")
     return false
   else
     r = Reserved.new
     r.reservation = self
     r.equip = equip
     r.save
   end
  end
任何帮助将不胜感激.我知道我在这里缺少一些基本的东西.
Luk*_*ncl 26
使用add_to_base存储错误消息似乎没什么问题,你只需要弄清楚如何进入它的观点.
怎么样:
flash[:notice] = @reservation.errors.full_messages.to_sentence
假设您要重新显示表单,您也可以使用:
<%= f.error_messages %>
或者可能:
<%= error_messages_for :reservation %>
此外,您可能希望使用flash [:error],然后您可以使用视图中的CSS类对其进行不同的着色.
| 归档时间: | 
 | 
| 查看次数: | 20274 次 | 
| 最近记录: |