Rails 求教 Rails 取消订单需要填说明的实践

wuwx · 2015年08月02日 · 最后由 marksloan 回复于 2015年08月03日 · 2149 次阅读

大概描述下我目前的情况,Order 订单模型,使用 state_machine 定义了一个 cancel 的 event 在 orders 控制器里,使用了一个 cancel 的方法,对应 put /orders/cancel 去调用他 也就是说暴露出来的 router 跟 cancel 有关的只有 cancel 一个 之前都是直接使用一个链接,直接指定 :method => :put 现在增加了一个需求,就是希望用户在取消订单的时候,还得输入为什么要取消订单的理由:) 这种情况下应该怎么设计比较好呢? 把输入页面设置为 get /orders/cancel,提交页面设置为 put /orders/cancel 还是输入页面直接放在 order 的 show 页面或者其他 js 方式弹出? 谢谢大家:)

传统 Rails 方式可以加入 edit 路由,或者其他名字提交 edit 表单就行。

不过最简单就 Javascript 了,监听用户点击'cancel'按钮,preventDefault, 跳出文本框和确认按钮,输入理由,确认后在表单里面加入理由项并提交。后端只需要在 cancel 里面接受 reason attribute 就可以了,无需其他改变。

强制的功能,不能用 js,因为用户关掉浏览器的 js 就能跳过了。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号