我有一个部分根据模型的属性类型在我的表单中插入适当的输入。我传递了一个属性名称数组,我的部分放置了一个form.text_field,其中属性是一个字符串,当一个属性是一个整数时,我还有一个form.select(我也有办法找到与属性相关的文本值集合)等等与datetime,等等。
问题是部分需要尽可能通用,所以我想检查是否有params [:search] [:attr_name]来设置默认值,如果没有它,我使用默认调用,它在表单中设置模型的值。
当然,我可以这样做(我使用HAML)工作:
- if search_param(field)
= form.text_field field, :value => search_param(field)
- else
= form.text_field field
但它真的很难看。只有在条件为真时,才有办法将选项传递给方法。这样的事情。
= form.text_field field, (:value => search_param(field) ) if search_param(field)
我也尝试过:
= form.text_field field, :value => search_param(field) || field.to_sym
但它在输入
中显示“field”想法?
答案 0 :(得分:0)
我不确定这是否是您想要的结果,但是如果您使用model.send(字段)来从模型中获取属性值,那么该怎么做呢?所以它会是这样的:
= form.text_field field, :value => ( search_param(field) || model.send(field) )
答案 1 :(得分:0)
这是使用三元运算符的一种方法:
form.text_field *([field] + (search_param(field) ? [:value => search_param(field)] : []))