我正在使用SimpleForm,我有一个看起来像这样的输入:
<%= f.input_field :language, collection: Rouge::Lexer.all.map(&:tag).sort, as: :select, selected: "ruby", class: "form-control" %>
存储这样的对象:
[60] pry(main)> q.language
=> "ruby"
[64] pry(main)> w.language
=> "csharp"
这适用于新问题,因为它会自动选择“红宝石”,这是好的。
但是,当用户编辑记录时,我希望此字段预先选择存储在此对象中的语言。
因此对于上面的对象q
,它应该预先选择“ruby”,但是对于w
对象,它会预先选择“csharp”。
我是如何做到这一点的,因为language
是一个字符串而不是一个ID,并且我想要new
个实例的默认值?
答案 0 :(得分:1)
你可以说:
selected: @question.language || 'ruby'
首先检查模型上是否存在属性,否则将默认为'ruby'
。
如果您想将此逻辑移出模板,一些好的候选位置将是模型,演示者或form object。