我有一个文本字段,我预先填充了一些文本,但我发现如果表单验证失败,那么我添加的任何额外文本都不会保留
f.input :description, as: :text, input_html: { rows: 10, cols: 10, value: bike_description }
def bike_description
"text here"
end
因此,如果我添加到文本字段并且读取text here and some more text
,则在表单验证失败后,该字段只会读取text here
我怎么能记住我添加的任何额外文字,还是以其他方式加载默认文字?
我已尝试将此方法放入我的模型中
def bike_description
read_attribute(:description).presence || 'text here'
end
但是我得到了
undefined local variable or method `bike_description' for #<ActiveAdmin::Views::ActiveAdminForm:0x007fe9cb2d13a8>
由于
答案 0 :(得分:2)
目前,您使用bike_description
方法的返回值作为表单字段的值。无论如何在模型上设置描述,都会显示bike_description
。
假设您的数据库有description
,那么您可以通过向模型中添加这样的方法向属性读取器添加默认文本:
# remove the overwritten value getter from the form
f.input :description, as: :text, input_html: { rows: 10, cols: 10 }
# add this to your model
def description
read_attribute(:description).presence || 'text here'
end
如果description
文字为空,则会返回description
属性的当前值或默认文本。