我有这样的模特:
class User
include Mongoid::Document
include Mongoid::Timestamps
include ActiveModel::SecurePassword
...
field :import_settings, :type => Hash, default: lambda { default_values }
def default_values
{
hosts: '',
port: '',
database: '',
user: '',
password: ''
}
end
end
我的表格看起来像这样:
<%= form_for(@user, {:url => admin_path, :controller => 'stactic_pages', :action => 'update_import'}) do |f| %>
<%= render 'shared/error_messages' %>
...
<%= f.fields_for :import_settings do |p| %>
<%= p.label :hosts %>
<%= p.text_field :hosts %>
<%= p.label :port %>
<%= p.text_field :port, placeholder: :port %>
<% end %>
<%= f.submit 'Save changes', class: 'btn btn-large btn-primary' %>
<% end %>
一切正常,我可以收集/保存/更新数据,但是在前端没有显示散列中的数据(以前保存过的数据)。有什么想法吗?
顺便说一句,在我的控制器上我确实有以下内容:
@user = current_user
if @user.update_attribute(:import_settings, params[:user][:import_settings])
flash[:success] = 'Details saved'
redirect_to admin_path
else
flash[:error] = 'An error happened'
end
这是一个自定义控制器,仅更新部分用户详细信息。 (不是用户的主要编辑页面)。
答案 0 :(得分:0)
从
更新您的代码 <%= f.fields_for :import_settings do |p| %>
到
<%= f.fields_for @user.import_settings do |p| %>