但是怎么回事?
我的模型正在处理我正在编写的预订系统的逻辑和数据,该系统允许用户重复预订资源。我想显示一个弹出窗口,让用户知道定期预订存在问题(例如,其中一天的某个资源发生冲突),但也允许他们继续预订,即不要只是验证和回滚失败。
这样的逻辑很好但是如果我不能/不应该从激活某些AJAX的模型中调用控制器方法,那么调用弹出窗口显示冲突的最佳方法是什么?
使用Rails 3
感谢您的帮助
答案 0 :(得分:0)
我首先在模型上定义一个返回任何冲突事件的方法,例如:
class Event
def conflicts
Event.where(...)
end
end
然后,在您的视图中,您可以迭代任何冲突(如果有),并在页面上显示它们。
如果要在将事件保存到数据库之前执行此操作,则可以向页面添加一些javascript以通过AJAX POST事件数据,以及“预览”参数,并让控制器返回JSON表示没有保存它的事件。如果有任何冲突,您的javascript将显示任何冲突。
控制器看起来像这样:
class EventsController
def create
@event = Event.new(params[:event])
unless params[:preview]
@event.save
end
respond_with @event, :include => :conflicts
end
end
我会把javascript留给你! :)