以下はrails-tutorialの12章でのパスワードを再設定する際のhtmlなのですが
#edit.html.erb <% provide(:title, 'Reset password') %> <h1>Reset password</h1> <div class="row"> <div class="col-md-6 col-md-offset-3"> <%= form_for(@user, url: password_reset_path(params[:id])) do |f| %> <%= render 'shared/error_messages' %> <%= hidden_field_tag :email, @user.email %> <%= f.label :password %> <%= f.password_field :password, class: 'form-control' %> <%= f.label :password_confirmation, "Confirmation" %> <%= f.password_field :password_confirmation, class: 'form-control' %> <%= f.submit "Update password", class: "btn btn-primary" %> <% end %> </div> </div>
form_forの引数が何故@userになるのかいまいち理解できません。editアクションも
def edit end
と@userが定義されているわけでもなく、色々な説明を見たのですがどれもしっくりきませんでした。
メールアドレスをキーとしてユーザーを検索するためには、editアクションとupdateアクションの両方でメールアドレスが必要
しかし、フォームを一度送信してしまうと、updateでこの情報が消える
それを解決するのが、ページ内に@userのemailをこっそり誰にも見えないように引っ張ってくる手法
あるサイトにこう書いてあったのですが、結局emailの情報はparams[:email]に保存されてしまい、ならform_forの引数は:userでいいと思いました。
どなたかご教授願えないでしょうか。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。