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

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

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

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

Ajax

Ajaxとは、Webブラウザ内で搭載されているJavaScriptのHTTP通信機能を使って非同期通信を利用し、インターフェイスの構築などを行う技術の総称です。XMLドキュメントを指定したURLから読み込み、画面描画やユーザの操作などと並行してサーバと非同期に通信するWebアプリケーションを実現することができます。

Q&A

解決済

1回答

4168閲覧

js.erbが読み込めずAJAXが起動しない。

Shika_Tech

総合スコア13

Ruby on Rails 5

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

Ajax

Ajaxとは、Webブラウザ内で搭載されているJavaScriptのHTTP通信機能を使って非同期通信を利用し、インターフェイスの構築などを行う技術の総称です。XMLドキュメントを指定したURLから読み込み、画面描画やユーザの操作などと並行してサーバと非同期に通信するWebアプリケーションを実現することができます。

0グッド

0クリップ

投稿2020/04/02 04:37

編集2020/04/02 04:41

前提・実現したいこと

js.erbを読み込みajaxでviewに返したい。

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

こちらの記事
を参考にユーザーに対するフォロー機能をAJAXで実装を試みたのですが、AJAX通信がうまくいきません。

画面をリロードすると反映されます。データのやりとり自体はうまくいってるようです。

###ログ

No template found for RelationshipsController#destroy, rendering head :no_content Completed 204 No Content in 453ms (ActiveRecord: 4.4ms)

該当のソースコード

users/_follow_form.html.erb

html

1<% if user_signed_in? && @user != current_user %> 2 <div id="follow_form"> 3 <% if current_user.following?(@user) %> 4 <%= form_for(current_user, url: relationship_path(@user), method: :delete, remote: true) do |f| %> 5 <%= f.submit "フォロー解除", action: "create", remote: true, class: "btn" %> 6 <% end %> 7 <% else %> 8 <%= form_for(current_user, url: relationships_path, method: :post, remote: true) do |f| %> 9 <%= hidden_field_tag :following_id, @user.id %> 10 <%= f.submit "フォローする", action: "create", remote: true, class: "btn" %> 11 <% end %> 12 <% end %> 13 </div> 14<% end %>

users/create.js.erb

create.js.erb

1$("#follow_form").html("<%= (render partial: "users/follow_form")"); %>

users/destroy.js.erb

destroy.js.erb

1$("#follow_form").html("<%= (render partial: "users/follow_form")"); %>

relationships_controller

ruby

1class RelationshipsController < ApplicationController 2 def create 3 @user = User.find(params[:following_id]) 4 current_user.follow(@user) 5 end 6 7 def destroy 8 @user = User.find(params[:id]) 9 current_user.unfollow(@user) 10 end 11end

user/rb

ruby

1# frozen_string_literal: true 2 3class User < ApplicationRecord 4 # Include default devise modules. Others available are: 5 # :confirmable, :lockable, :timeoutable, :trackable and :omniauthable 6 devise :database_authenticatable, :registerable, 7 :recoverable, :rememberable, :validatable 8 9 has_many :shops, dependent: :destroy 10 has_many :comments, dependent: :destroy 11 has_many :likes, dependent: :destroy 12 has_many :like_shops, through: :likes, source: :shop 13 14 has_many :following_relationships, foreign_key: "follower_id", class_name: "Relationship", dependent: :destroy 15 has_many :following, through: :following_relationships 16 has_many :follower_relationships, foreign_key: "following_id", class_name: "Relationship", dependent: :destroy 17 has_many :followers, through: :follower_relationships 18 19 mount_uploader :image, ImageUploader 20 21 validates :username, presence: true, length: { maximum: 10 } 22 validates :email, presence: true 23 24 def following?(user) 25 following_relationships.find_by(following_id: user.id) 26 end 27 28 def follow(user) 29 following_relationships.create!(following_id: user.id) 30 end 31 32 def unfollow(user) 33 following_relationships.find_by(following_id: user.id).destroy 34 end 35end 36

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

Rails 5.0.7
ruby 2.5.1

以上です。
よろしくお願い致します。

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

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

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

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

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

guest

回答1

0

自己解決

単純にcreate.js.erbとdestroy.js.erbのディレクトリ位置を間違えていました。
viwes/users/以下ではなくviews/relationships/以下でした。
凡ミスでした。

投稿2020/04/02 04:51

Shika_Tech

総合スコア13

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問