以下のようなログインに関するアクションをsessions controllerに書いています。
new:ログインフォーム画面
create:ログイン処理
ruby
1 def new 2 end 3 4 def create 5 user = User.find_by(email: params[:session][:email].downcase) 6 if user && user.authenticate(params[:session][:password]) 7 log_in user 8 remember user 9 flash[:success] = 'ログインしました。' 10 redirect_back_or root_url 11 else 12 flash.now[:danger] = 'メールアドレスまたはパスワードが正しくありません。' 13 render 'new' 14 end 15 end
ここでログイン処理に失敗した処理で、render'new'
をした後に、newのログインフォーム画面に戻りますが、その場合に限り、jsが読み込まれません。
(逆に最初にログインフォーム画面にアクセスした時は読み込まれています。)
全画面共通テンプレのapplication.html.slim
では以下のようにアクション毎にjsを読み込ませています。(下記の通り、全てで共通のjsはその前に直接includeしています。)
html
1 ・・ 2 ・・ 3 = javascript_include_tag 'application' 4 = render "#{controller.controller_name}/head_#{controller.action_name}" rescue nil
対応するjsを読み込むファイルは、
views/sessions/の中に以下のように置いています。
_head_new.html.slim
html
1= javascript_include_tag 'js/flash'
※jsはassets/jacascripts/js/
に置かれているので、パス自体はあっています。
initializersのassets.rb
にも以下のように記載し、プリコンパイルしています。
ruby
1Rails.application.config.assets.precompile += %w( *.js )
なぜ、renderでログインフォーム画面を描画する時だけ、application.html.slim
の以下のrenderがうまく走らないのでしょうか?
html
1 = render "#{controller.controller_name}/head_#{controller.action_name}" rescue nil
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/10/21 16:07