多くのアドレスを持つことができるユーザーモデルを持つアプリがあります。ネストされた属性を使用してサインアップするときに、ユーザーにアドレスを追加できるようにしたい。私はまた、ユーザーモデルにdeviseを使用しています。ネストされたアトリビュートフォームがデバイスビューに表示されないRails 4
モデル:
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%>
把握しましたか?私は同じ問題を抱えていた – Mel
いいえ、私はそれをあきらめてデザインを違ったものにしましたが、私のカスタムコントローラが実際に使用されていないという別の面で作業していて、それでもdevise oneを使用していました。正しいコントローラーが使用されていることを二重に確認することをお勧めします。なぜなら、それは私の問題だったという気持ちがあるからです。 – ZSOR