![](/img/trans.png)
[英]Will setting Rails model attributes with the same value make changed? return true?
[英]Rails: simple 'Setting' model with key, value attributes
我是Rails的新手,我有一个很简单的情况要解决,但是我不知道该如何进行。
我想用key, value
属性创建一个简单的“设置”模型。 “ SettingsController”可能仅包含2个公共方法index
和update
。 只有index
操作将具有一个具有格式的视图文件,该格式的字段表示“设置”表的每个记录。
我希望能够定义一些允许的键(可能使用某些私有方法),并且我希望表单在提交表单以update
操作时创建或更新相关字段的记录。
现在,我不知道我应该在控制器中使用什么代码来执行index
和update
操作,以及在窗体的索引视图文件中可以同时创建/更新多个记录并可以始终显示更新值的表单。 我该如何进行呢?
更新#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.