質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

解決済

1回答

481閲覧

link_toメソッドにてjs形式のファイルが呼び出されない

xxkosukexx

総合スコア15

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

0グッド

2クリップ

投稿2019/01/27 08:22

編集2019/01/27 09:10

link_toメソッドにてjs形式のファイルが呼び出されない

ただいま、Ruby On Rials 5アプリケーションプログラミングを勉強中なのですが、ajaxの非同期処理の学習でわからないことがあるのでおしえていただきたいです。

発生している問題・エラーメッセージ

link_toメソッドでremote属性をtrueとしてupanelというアクションを呼び出すようにしたのですが、リクエストがjs形式にならずhtml形式のリクエストが送信されてしまい、js.erbのファイルが呼び出されません。

ajax機能を使用するためには何か必要な準備があるのでしょうか?
他の人の記事等を見ても特に準備があったようには思えませんでした。

申し訳ないですがjs.erbを呼び出すための解決策を教えていただきたいです。

該当のソースコード

ruby

1class AjaxController < ApplicationController 2 def index 3 end 4 def upanel 5 @time = Time.now.to_s 6 logger.debug(request.fullpath + 'デバッグ') 7 respond_to do |format| 8 format.html 9 format.js 10 end 11 end 12end

html

1<div> 2 現在時刻:<%= Time.now %> 3</div> 4<div id="result"> 5 現在時刻:<%= Time.now %> 6</div> 7<%= link_to '更新', { action: :upanel}, remote: true %>

js

1$('#result').html( 2 "<%= escape_javascript('現在時刻:' + @time) %>" 3);

ruby

1require 'time_constraint' 2 3Rails.application.routes.draw do 4get 'ajax/index' 5get 'ajax/upanel(.:format)' 6post 'ajax/upanel(.:format)' 7#post 'ajax/upanel.js'

試したこと

・app/assets/javascripts/application.js内のコメントアウトは削除し、requireを全て有効にした。
・ルート指定をpost 'ajax/upanel.js'にしてみた
・upanelアクション内でrequest.fullpathを確認したら「Processing by AjaxController#upanel as HTML
/ajax/upanelデバッグ」が表示された。
・同フォルダのupanel.html.erbが呼び出されるのは確認した。
・コードの記述に間違いないことは確認した。
・gem 'jquery-rails'を追加した。

補足情報(FW/ツールのバージョンなど)

Rails 5.2.2
ruby 2.4.1p111
mac os 10.14.2(mojave)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

自己解決しました。
参考書にサンプルのコードがあったのを忘れていて、そのコードを入れて実行してみたところ正常にjs.erbが呼び出されました。
不具合の原因は以下の通りでした。
・app/assets/javascripts/application.jsのdefaultのrequireのコメントアウトを削除したからでした。
一番肝心なことを試すことを忘れていてしまい申し訳ありませんでした。
以下のrequire文を有効にするとjs.erbが呼び出されなくなりました。
// = require jquery
// = require rails-ujs
// = require activestorage
// = require turbolinks
// = require_tree .
このあたりの知識はまだないので、なぜrequire文を有効にするとjs.erbが呼び出されなくなるのかはわかりません。
また、試したことにrequire文を有効にしたと記述しましたが、そもそもajaxの学習以前の作業で、require文を勝手に有効にしたことから発生した不具合でした。

投稿2019/01/28 01:27

編集2019/01/28 01:30
xxkosukexx

総合スコア15

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問