【问题标题】:How to display data on Rails form for nested attributes - Mongoid如何在 Rails 表单上显示嵌套属性的数据 - Mongoid
【发布时间】:2014-08-22 11:40:41
【问题描述】:

我有一个这样的模型:

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

这是一个自定义控制器,仅更新部分用户详细信息。 (不是用户的主编辑页面)。

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-4 mongoid mongoid3


    【解决方案1】:

    更新您的代码

    &lt;%= f.fields_for :import_settings do |p| %&gt;

    <%= f.fields_for @user.import_settings do |p| %>
    

    【讨论】:

      猜你喜欢
      • 2012-07-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多