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_标记中具体保留值的实际问题。谢谢