【发布时间】:2011-11-29 15:40:18
【问题描述】:
我有一个 create 方法,它调用模型中的一个方法来 ping 一些第三方 API。
我需要做的是,如果 API 发回某个消息,那么我会显示一个错误。
以下是我当前的控制器和模型设置,那么我如何将错误返回到控制器(以及最终的视图)?
这是我的控制器中的方法:
def create
@number = Number.where(:tracking => params[:number][:tracking], :user_id => current_user.id).first
if @number.blank?
@number = Number.new
@number.tracking = params[:number][:tracking]
@number.user_id = current_user.id
@number.notes = params[:number][:notes]
@number.track
end
respond_with(@number) do |format|
format.html { redirect_to root_path }
end
end
这是我模型中的方法:
def track
create_events
end
def create_events(&block)
tracker = fedex.track(:tracking_number => number)
if tracker.valid?
self.assign_tracker(tracker)
tracker.events.each do |e|
self.create_event(e) unless (block_given? && !block.call(e))
end
save
else
# NEED TO THROW THE ERROR HERE
end
end
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-3 model-view-controller error-handling