前提・実現したいこと
アカウント登録画面でユーザー情報を記入して送信後に,メール送信後に以下のメール送信完了画面を表示させたい.
app/views/account_activations/sent.html.erb
<p> ご入力いただいたメールアドレス(<%= @user.email %>)に、確認用メールを送信しました。 メール本文に記載されているURLを開き、会員登録を完了させてください。 </p>
発生している問題・エラーメッセージ
NoMethodError in AccountActivations#sent undefined method `email' for nil:NilClass
該当のソースコード
routes.erb
Rails.application.routes.draw do get '/signup', to: 'users#new' root 'static_pages#home' get '/login', to: 'sessions#new' post '/login', to: 'sessions#create' delete '/logout', to: 'sessions#destroy' resources :users get '/account_activations/sent', to: 'account_activations#sent' resources :account_activations, only: [:edit] end
app/controllers/account_activations_controller.erb
class AccountActivationsController < ApplicationController def sent @user = User.find_by(id: params[:user_id]) end end
app/controllers/users_controller.erb
class UsersController < ApplicationController def new @user = User.new end def create @user = User.new(user_params) if @user.save @user.send_activation_email redirect_to account_activations_sent_url else render 'new' end end private def user_params params.require(:user).permit(:name, :email, :comment, :password) end end
app/views/users/new.html.erb
<% provide(:title, 'Sign up') %> <h1>登録する</h1> <div class="row"> <div class="col-md-6 col-md-offset-3"> <%= form_for(@user) do |f| %> <%= render 'shared/error_messages' %> <%= f.label :name %> <%= f.text_field :name, class: 'form-control' %> <%= f.label :email %> <%= f.email_field :email, class: 'form-control' %> <%= f.label :password %> <%= f.password_field :password, class: 'form-control' %> <%= f.submit "登録する", class: "btn btn-primary" %> <% end %> </div> </div>
試したこと
ここに問題に対して試したことを記載してください。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/03/03 02:19
2020/03/03 05:54