今自分がつくっている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. users_cntrolle
2. その edit アクションを呼び出す view
ありがとうございます。
原因はたぶん分かりました。
> app/views/users/edit.html.slim:5:in `_app_views_users_edit_html_slim__2219724267466675965_69899664890000'
上記のviewの5行目は下記になります。
= form_for current_user, html: { id: :edit_user_form } do |f|
既にログアウトしていて、current_user が無いのにアクセスすると、
提示したエラーがおきます。
ログインしていると、下記が表示され、
<a href="/users/45/edit">マイページ</a>
ログインしてないと、ログイン画面のリンクが表示されます。
<a href="/sign_in">ログイン</a>
ログアウト済なのに、マイページのリンクが表示されているユーザーがいるということでしょうか?
どうしてこの様な現象がおきるのでしょうか?
キャッシュか何かの問題でしょうか
質問を編集してそちらに情報を集めていただけますか。そのほうが他の方の目に止まりやすいので。
承知しました。
ログインしてない 時と
ログアウト済 の時
で動きが異なるのは、ログアウトしても「ログインしていない」状態に成っていないということです
sessionコントラーラーを載せてください。
あなたの載せ方はごく一部しか載せてくれないのですが、それはやめてください。
その周りにヒントがあることも多いので
すみません。Sessionコントローラーを載せました。
deviseに手を加えていないとすると、かなり???ですね。
どういう操作をした時にそうなるのか、手順を省略せずに記述してください
自分の操作では無いんですよ。
他にインターネットから使っているユーザーの操作なんですね。
そのユーザーが起こすエラーなんで、どういう状況かちゃんと分かりません。。
同じエラーを起こせたのは下記の方法です。
①ログインしているタブをそのままにしておきます。
②別タブでログアウトします。
③そして、ログインしているタブに表示されているマイページのリンクをクリックします。
④同様のエラーが起きました。
しかし、アクセスしているユーザーの9割くらいは、スマホからです。
別タブを開いてみたいな、こんな変な操作はしてないと思います。
回答1件
あなたの回答
tips
プレビュー