Rails中每个表行的表单字段

时间:2016-11-16 15:05:14

标签: ruby-on-rails ruby

我的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

1 个答案:

答案 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方法作为可能的用例。