Rails:简单的“设置”模型,带有键,值属性

时间:2016-07-31 00:26:43

标签: ruby-on-rails forms ruby-on-rails-4

我是rails的新手,我有一个非常简单的情况要解决,但我无法弄清楚如何继续使用它。

我想创建一个带有index属性的简单“设置”模型。 'SettingsController'可能只包含2个公共方法updateindex。只有update操作才会有一个带有表单的视图文件,其中的字段将代表“设置”表的每条记录。

我希望能够定义一些允许的密钥(可能正在使用某些私有方法),并且我希望表单在将表单提交到index操作时创建或更新相关字段的记录。

现在,我不确切地知道我应该在控制器中为updateclass Admin::SettingsController < ApplicationController def index @settings = Setting.all end def update setting_params.each do |key, value| Setting.where(key: key).first.update_attribute :value, value end redirect_to admin_settings_path, notice: "Settings saved." end private def setting_params params.require(:settings).permit(:site_title, :site_desc) end end 操作使用哪些代码,以及在可以在同一时间创建/更新多个记录的表单的索引视图文件中时间,可以一直显示更新的值。我该如何处理?

更新#1:

我设法编写了一些控制器操作,如下所示(基于一些教程):

<h1>Settings</h1>

<%= form_tag admin_settings_path, method: "put" do %>

    <p>
        <label>Site Title:</label>
        <%= text_field_tag "settings[site_title]" %>
    </p>

    <p>
        <label>Site Description:</label>
        <%= text_field_tag "settings[site_desc]" %>
    </p>

    <p>
        <%= submit_tag "Save settings" %>
    </p>

<% end %>

索引视图模板中的表单代码如下:

readLines()

此表单在数据库中正确保存值,但保存的值不会在表单字段中保留。

1 个答案:

答案 0 :(得分:1)

问题可能出在index行动中。 Setting.all返回一个Setting记录数组,而不是{key1:value,key2:value}这样的哈希,我认为你试图实现这一点。因此,表单不正确地显示数据。你可以试试这个:

def index
  @setting = {}
  pairs = Setting.pluck(:key, :value)
  pairs.each { |key, value| @setting[key] = value }
  @setting
end