【发布时间】:2016-07-11 10:17:53
【问题描述】:
我有一个应用程序,其用户模型可以有多个地址。我希望能够在用户通过嵌套属性注册时为其添加地址。我也在为用户模型使用设计。
型号:
class Address < ActiveRecord::Base
belongs_to :user
end
class User < ActiveRecord::Base
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
has_many :addresses
accepts_nested_attributes_for :addresses
end
注册控制器:
class Users::RegistrationsController < Devise::RegistrationsController
before_action :set_user, only: [:show]
def new
resource = build_resource({})
resource.addresses.build
respond_with_navigational(resource){ render_with_scope :new }
end
def create
super
end
private
def set_user
@user = User.find(params[id])
end
def user_params
params.require(:user).permit(:email, :password, :first_name,
:last_name, :phonenumber, :addresses_attributes => [:postcode,
:housenumber, :streetname, :city, :town] )
end
end
注册视图中的表单字段:
<%= f.simple_fields_for :addresses do |address|%>
<%= address.input :housenumber %>
<%= address.input :postcode %>
<%= address.input :streetname%>
<%= address.input :town%>
<%= address.input :city%>
<%end%>
【问题讨论】:
-
你知道怎么做吗?我遇到了同样的问题
-
不,我放弃了它并使设计与众不同,尽管在处理不同方面时我确实意识到我的自定义控制器实际上并没有被使用,它仍在使用设计控制器。我建议仔细检查是否使用了正确的控制器,因为我有一种感觉,那就是我的问题。
标签: ruby-on-rails ruby devise nested-forms cocoon-gem