Rails 合并 validation 和一个初级问题

as181920 · 2013年04月12日 · 最后由 as181920 回复于 2013年04月13日 · 1920 次阅读

问题 1: model 中的 validation,比如下面两个

validates_length_of :mobile_number, is: 11, if: Proc.new { |participant| 
  participant.locale == :"zh-CN"
}

validates_format_of :postalcode, :with => /\d{6}/, if: Proc.new { |participant| 
  participant.locale == :"zh-CN"
}

怎么合并写得简单点,免得重复同一个 proc 作为条件。应该是 guide 上的“5.4 Grouping conditional validations”,具体怎么写呢?

问题 2: render 同一个 form,在不同的页面调用那个 submit 的 button 的文字显示是不一样的,大家怎么做的? 用

<%= render 'form', btn_str: "提交" %> 

居然在 form 里面找不到 btn_str 这个变量,好像哪个初级的东西我没会哈。

呃,沉的好快

@as181920 @Rei 为什么有人回复了你却不说话了。

#3 楼 @zgm 很显然,提问是源于我知道 guide 上面的方法结合着可以实现,只是想偷懒看看有没有现成的好的代码直接参考;结果只获得了两个直接帮忙定位好的 guide 位置,还是需要我自己照着去看了弄出来。话说暂时没时间优化,咱起留着日后用的时候细细研究。

这边的情况是没时间纯粹学东西,做事情要紧。无奈下才有此一情况。

#4 楼 @as181920 官方的例子和你的情景完全一模一样。

简言之我要把条件合并,避免写多次,

with_options :if => :xxxxx do |v|
  v.validates_length_of :mobile_number, is: 11
  v.validates_format_of :postalcode, :with => /\d{6}/
end

而这里的 xxxxx 方法就是要返回一个 proc,猜如此是吧。只是 proc/lambda 这一套一直不熟,前些日子看一帖子有说收藏了,今日去看却已经被删了。

上面代码是想的,没有实际测,头晕,有时间了再去写了测测(没测试代码,手测又懒哈)

补充,guide 那一段看了,可能还是没看到点上或者英文太次理解有偏差

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