作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 Configuration
模型,它将 settings
存储在 JSONB 列中。
# Stores site wide configuration settings
# This is used in conjunction with PaperTrail to make each change traceable
class Configuration < ActiveRecord::Base
has_paper_trail
validates_uniqueness_of :name
after_initialize :default_values if :new_record?
private
def default_values
self.settings = {
site_title: 'Portfolio Site'
}
end
end
模型设置了某些默认属性,例如 site_title
。我想使用设置哈希在我的表单中动态创建输入。我试过:
= simple_form_for(@configuration) do |f|
= f.input :name
= simple_fields_for :settings do
- @configuration.settings.each do |k,v|
= f.input k
= f.submit
这给出了 undefined method 'site_title'
因为它不是模型属性。我可以在指定键值绑定(bind)时使用 simple_forms input
方法吗?
最佳答案
看起来您不能将 simple_form
用于非属性输入。这将起作用:
= simple_form_for(@configuration) do |f|
= f.input :name
- @configuration.settings.each do |k,v|
= text_field_tag "configurations[settings][#{k}]", v
= f.submit
您可能会扩展默认设置的值,以包含您希望通过 array
呈现的输入类型。
关于ruby-on-rails - 从具有简单形式的散列动态创建输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30407722/
我是一名优秀的程序员,十分优秀!