选择要在控制器

时间:2016-01-29 13:57:54

标签: ruby ruby-on-rails-4

我有一个结帐表单,允许用户指定帐单邮寄地址和送货地址。我需要的行为是

1)如果提供了帐单邮寄地址但没有送货地址,则送货地址为帐单邮寄地址

2)如果提供了送货地址,则送货地址应作为送货地址

传递
shipping: {
  first_name: params[:first_name] unless params[:shipping_first_name] != nil,
  last_name: params[:last_name] unless params[:shipping_last_name] != nil
}

这显然不起作用,我不确定如何设置

syntax error, unexpected ',', expecting keyword_end 

1 个答案:

答案 0 :(得分:1)

下面应该这样做:

shipping: {
    first_name: params[:shipping_first_name].presence || params[:first_name].presence,
    last_name: params[:shipping_last_name].presence || params[:last_name].presence
}
如果值不是Object#presence

present?方法将返回值nil||表达式中不是nil / blank的两个值中的第一个将是表达式的值。