rails_admin如何在创建表单

时间:2017-08-03 10:08:22

标签: ruby-on-rails ruby-on-rails-4 rails-admin

我正在尝试创建一个表单来为具有一个billing_information的模型用户创建新记录。 Billing_information有一个我希望包含在表单中的属性account_name。我尝试使用委托方法,但它不起作用。它产生: -

  

错误:用户的未知属性'billing_information_account_name'。

class User < ActiveRecord::Base
   accepts_nested_attributes_for :billing_information
   has_one :billing_information, inverse_of: :user
   delegate :account_name, to: :billing_information, allow_nil: true

   rails_admin do
      create do
         field :name
         field :email
         field :billing_information_account_name do
            def value
               bindings[:object].account_name    
            end
         end
      end
   end
end

有没有人有更好的解决方案?谢谢。

1 个答案:

答案 0 :(得分:1)

可悲的是,在这种情况下,您无法从rails admin获得帮助,但可以这样做。

您必须添加一个新的虚拟字段并在设置器中处理输入。看一下这个例子。

  class User < ApplicationRecord
    has_one :billing_information, inverse_of: :user

    # A getter used to populate the field value on rails admin
    def billing_information_account_name
      billing_information.account_name
    end

    # A setter that will be called with whatever the user wrote in your field
    def billing_information_account_name=(name)
      billing_information.update(account_name: name)
    end

    rails_admin do
      configure :billing_information_account_name, :text do
        virtual?
      end

      edit do
        field :billing_information_account_name
      end
    end
  end

您始终可以使用嵌套属性策略创建完整的billing_information,这意味着添加billing_information字段,您将获得一个很好的表单来填充所有信息。