我是rails的新手,我有一个非常简单的情况要解决,但我无法弄清楚如何继续使用它。
我想创建一个带有index
属性的简单“设置”模型。 'SettingsController'可能只包含2个公共方法update
和index
。只有update
操作才会有一个带有表单的视图文件,其中的字段将代表“设置”表的每条记录。
我希望能够定义一些允许的密钥(可能正在使用某些私有方法),并且我希望表单在将表单提交到index
操作时创建或更新相关字段的记录。
现在,我不确切地知道我应该在控制器中为update
和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
操作使用哪些代码,以及在可以在同一时间创建/更新多个记录的表单的索引视图文件中时间,可以一直显示更新的值。我该如何处理?
更新#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()
此表单在数据库中正确保存值,但保存的值不会在表单字段中保留。
答案 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