如何在SimpleForm中预先选择为现有对象选择的值?

时间:2016-06-17 23:23:51

标签: ruby-on-rails simple-form ruby-on-rails-5

我正在使用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个实例的默认值?

1 个答案:

答案 0 :(得分:1)

你可以说:

selected: @question.language || 'ruby'

首先检查模型上是否存在属性,否则将默认为'ruby'

如果您想将此逻辑移出模板,一些好的候选位置将是模型,演示者或form object