Ruby on rails Rails form_标记不显示现有字段值

Ruby on rails Rails form_标记不显示现有字段值,ruby-on-rails,forms,ruby-on-rails-4,Ruby On Rails,Forms,Ruby On Rails 4,我有如下设置控制器设置: 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

我有如下设置控制器设置:

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

网站名称:

网站描述:

现在,我可以在相关模型中保存/更新这些字段数据,并且可以通过rails控制台中的命令
Setting.all
查看数据。但问题是,通过表单保存记录后,当我重新加载设置索引页面时,表单为空,并且在字段中不显示以前保存的值


我做错了什么?

我认为(@variable)
需要使用
form\u标记,而不仅仅是一个form\u标记,因为保存后需要持久化对象


对于使用资源的工作,请在此处查看:

您可以按照前面的答案中所述的操作,即使用表单。但是,这也可以通过在创建和处理此表单的控制器操作中创建哈希来实现

在创建此表单的操作中,可以根据输入标记将哈希中的值初始化为空格/零,在处理此表单的操作中,可以将哈希中的值分配给从发布的参数[]获得的值

我在form_tag中遇到了类似的问题,我在索引操作中使用了以下代码,即最初呈现表单的操作:

@search = {name: "", ranking_group: 0}
然而,在搜索操作中,我使用以下代码填充此哈希:

@search = {name: params[:name], ranking_group: params[:ranking_group]}
最后,在视图中,我对输入标记使用了适当的默认值选项,如下所示:

<%= text_field_tag :name, @search[:name] %>

<%= select_tag :ranking_group, options_for_select(AmenityEntities::Amenity.ranking_group_options, @search[:ranking_group]), include_blank: true %>


希望这有帮助。

我们不能使用form_tag helper使字段中的值持久化。其次,我尝试将form_用作带有@setting变量的helper,但它说“form中的第一个参数不能包含nil或为空”。我发现这非常有用,因为它回答了如何在form_标记中具体保留值的实际问题。谢谢