20170430深圳Meetup
一、类似于淘宝网,可以连续选择多个商品筛选条件,这多个参数如何传递到后台,进行数据交互?
方案一:
def index
// 给view提供多个参数
@param1 = ...
@param2 = ...
end
// view可在跳转链接中按需要把参数传给下一次active,形成数据流闭环
view中路由XXXX_path(@param1,@param2)
缺点:各个相关路由都需要添加参数支持不方便,参数多时更不方便
二、save , save! 的疑问
函数添加感叹号会报出异常,在调试时有帮助,那么发布产品时要不要带!,若不带,难道需要源码中一个个去删除?这多麻烦
三、提交表单,model保存时失败,网页上的表单数据如何还原?
1. 对浏览器隐藏需要保密的event.id字段,以event.friendly_id代替显示
2. 自定义event网址时,填写提交表单的网址字段不合法,修改后再次提交报错
3. 原因分析:
@event.update(event_params)执行操作分两部分
- 以event_params更新@event变量
- @event变量保存到数据库表
在此案例中,第2步保存操作时,model效验失败,未保存到数据库中,但是@event值在第1步已经被改变
4. 解决方案:
note:
对于任何可以导致报错的重要字段,都需要考虑保存失败时的数据复原问题。
如果有多个重要字段呢?圈内有标准处理方式吗?
event_back = @event, 在update前这样保存备份用于出错时还原行吗?