繁体   English   中英

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

[英]Rails: simple 'Setting' model with key, value attributes

我是Rails的新手,我有一个很简单的情况要解决,但是我不知道该如何进行。

我想用key, value属性创建一个简单的“设置”模型。 “ SettingsController”可能仅包含2个公共方法indexupdate 只有index操作将具有一个具有格式的视图文件,该格式的字段表示“设置”表的每个记录。

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

现在,我不知道我应该在控制器中使用什么代码来执行indexupdate操作,以及在窗体的索引视图文件中可以同时创建/更新多个记录并可以始终显示更新值的表单。 我该如何进行呢?

更新#1:

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

class 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

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

<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 %>

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

也许问题出在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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM