招待機能として、下記のような実装をしたいと思っています。
・1つのフォームでInviteモデルのmailカラムを複数同時に登録したい
・バリデーションが効くようにしたい
・accept_nested_attributes_forは使わない
下記のどちらかご回答いただけると助かります。
どうぞよろしくお願いいたします!
質問①
accept_nested_attributes_forを利用せずに、Railsではどのように実装するのが標準な形なのでしょうか?
また参考になるリンクなどを教えていただければ助かります。
質問②
フォームから配列形式でメールアドレスを取得する形でうまくいくのではと思って実装をすすめました。
この際のstrong_parameterの設定方法を教えていただければと思います。
下記では、strong_parameterでfalseが出てしまいました。
strong_parameterをRailsガイドのネストしたパラメータを参考にいろいろな値を試しましたがうまく実装することができませんでした。
またそもそもこのような実装方法でバリデーションは効くのでしょうか?
ruby
1_form.html.erb 2 3<%= form_with(model: invite, local: true) do |form| %> 4 <% 2.times do |i| %> 5 <div class="field"> 6 <%= form.text_field :invite, name: "invite[][mail]" %> 7 </div> 8 <% end %> 9 <div class="actions"> 10 <%= form.submit %> 11 </div> 12<% end %> 13
出来上がったForm
<form action="/invites" accept-charset="UTF-8" method="post"><input type="hidden" name="authenticity_token" value="edn+7mV7v4W91ig/T7oAFmDn/VLsmHeXwka5mUd0q8YyExCKO2Ve0kD4j3zLEvmcbVSS+cAvgmEPuqHhOuhgow=="> <div class="field"> <input name="invite[][mail]" type="text" id="invite_invite"> </div> <div class="field"> <input name="invite[][mail]" type="text" id="invite_invite"> </div> <div class="actions"> <input type="submit" name="commit" value="Create Invite" data-disable-with="Create Invite"> </div> </form>
設定したストロングパラメータ
def invite_params params.require(:invite).permit([:mail]) end
取得したパラメータ
Request parameters {"authenticity_token"=>"oGR/ffIANP1b4RVcFbtj8keyWE・・・・・", "invite"=>[{"mail"=>"come@example.com"}, {"mail"=>"go@example.com"}], "commit"=>"Create Invite", "controller"=>"invites", "action"=>"create"}
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。