今自分がつくっているRailsのサイトがあります。
他のユーザーが使っていて以下のエラーが頻繁に起きています。
この原因は何でしょうか?
An ActionView::Template::Error occurred while GET </users/45/edit> was processed by users#edit Exception First argument in form cannot contain nil or be empty
app/views/users/edit.html.slim:5:in `_app_views_users_edit_html_slim__2219724267466675965_69899664890000'
env: production message: #<ActionView::Template::Error: First argument in form cannot contain nil or be empty>
下記はコメントのやりとりからの追記です。
追記
ありがとうございます。
原因はたぶん分かりました。
app/views/users/edit.html.slim:5:in `_app_views_users_edit_html_slim__2219724267466675965_69899664890000'
上記のviewの5行目は下記になります。
ruby
1 = form_for current_user, html: { id: :edit_user_form } do |f|
既にログアウトしていて、current_user が無いのにアクセスすると、
提示したエラーがおきます。
ログインしていると、下記が表示され、
ruby
1<a href="/users/45/edit">マイページ</a>
ログインしてないと、ログイン画面のリンクが表示されます。
ruby
1<a href="/sign_in">ログイン</a>
ログアウト済なのに、マイページのリンクが表示されているユーザーがいるということでしょうか?
どうしてこの様な現象がおきるのでしょうか?
キャッシュか何かの問題でしょうか
追記
こちらがSessionコントローラーです。
Deviseのデフォルトのもので、特に何もしておりません。
ruby
1class Users::SessionsController < Devise::SessionsController 2 # before_action :configure_sign_in_params, only: [:create] 3 4 # GET /resource/sign_in 5 # def new 6 # super 7 # end 8 9 # POST /resource/sign_in 10 # def create 11 # super 12 # end 13 14 # DELETE /resource/sign_out 15 # def destroy 16 # super 17 # end 18 19 # protected 20 21 # If you have extra params to permit, append them to the sanitizer. 22 # def configure_sign_in_params 23 # devise_parameter_sanitizer.permit(:sign_in, keys: [:attribute]) 24 # end 25end
回答1件
あなたの回答
tips
プレビュー