我的Rails应用程序中有一个设置表,其中包含以下列:
id, name, value
一些示例数据的示例可能是:
id: 1,
name: 'site_name'
value: 'Cameron'
id: 2
name: 'email'
value: 'cameron@example.com'
我想要做的是有一个页面,我将这些设置列为简单的文本字段,然后我可以编辑并保存回数据库。
我有以下控制器方法列出它们:
def index
@settings = Setting.all
end
然后在视图中显示它们:
<% @settings.each do |setting| %>
<div class="form__group">
<label class="form__group__label"><%= setting.name %></label>
<div class="form__group__input">
<input type="text" name="setting[<%= setting.name %>]" value="<%= setting.value %>">
</div>
</div>
<% end %>
哪个显示得很好。但是我如何保存它们?
我正在考虑在控制器中循环它们,如:
def update_settings
params[:setting].each do |setting|
# somehow update each param sent back...
end
end
答案 0 :(得分:1)
您的更新操作应如下
def update_settings
params[:setting].each do |setting|
setting_row = Setting.where(name: setting.first).first_or_initialize
setting_row.update(value: seting.last)
end
end
当使用该名称设置不存在时,我使用.first_or_initialize方法作为可能的用例。