2016-12-23 6 views
0

Rubyのnoob全体として、私は簡単なことをする必要がありますが、それを行うには私にとって明らかではありません。やりたいは何 Rails devise:user上の関連付けsign_upを作成する

は以下の通りです:

私は1つ1への関連付け「アカウント」私はこのための余分なフォームフィールドを追加する工夫登録ビューで

と工夫のUserモデルを持っていますアカウント、それは私が立ち往生している場所です。

それは私が例えばビュー

にアカウントのフィールドを追加することはできません、これは動作しませんようだ:

# address is a field of Account 
<%= f.text_field :address %> 

私はスコープにアカウントのモデルをもたらすことができる方法は?それとも、私は本当にスコープにアカウントを追加する方法や、私が適切にユーザー連想アカウントにアクセスする方法を見当もつかないこの

<%= f.text_field :account['address'] %> 

ような何かをする方法があります。あなたはそこからRegistrationsControllerを考案オーバーライドする必要が助け

+0

'accepts_nested_attributes_for'は必要なものです。それを探して実装しようとする。 – 31piy

答えて

3

を申し込む際accountレコードを構築するためにcreate方法に変更。 次に、deviseメソッドのconfigure_permitted_pa​​rametersをオーバーライドしてこれらのパラメータをホワイトリストに追加します。

def configure_permitted_parameters 
    devise_parameter_sanitizer.permit(:sign_up, keys: [account_attributes: [:address]]) 
end 

ホワイトリストに登録する必要があるパラメータを変更する必要がある場合があります。

が続いビューで、あなたがうまくいけば、fields_for

よう
f.fields_for(:addresss) do |address_fields| 
    <%= address_fields.text_field :address %> 
end 

を使用する必要があり、これは問題を解決します。何かが動作しない場合、ネストされた属性を検索してみてください。

1

ため

Thxをユー​​ザーが正常にあなたが登録フォームからパラメータを追加することが可能にaccepts_nested_attributes_for :accountを使用する必要が

+0

私はまったく同意しますが、フォームビューでユーザーに関係のないフィールドを追加することはできません –

+0

フィールドを追加するにはfields_forを使用する必要があります 例: '<%= form_for(@user、:url => registration_path( 'user')、:html => {:オートコンプリート=>:off}、:remote => true)do | f | %> <% - user_detail = f.object.account || f.object.build_account%> <%= f.fields_for:アカウント、アカウントdo | account_f | %> <%= account_f.text_field:name%> <% end %> <% end %> (haventにはフォームに入るすべてのものが含まれています) –

関連する問題