🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Devise

Deviseとは、Ruby-on-Railsの認証機能を追加するプラグインです。

Ruby

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

Ruby on Rails

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

Q&A

解決済

2回答

422閲覧

Routing Errorが出るときと出ない時がある

退会済みユーザー

退会済みユーザー

総合スコア0

Devise

Deviseとは、Ruby-on-Railsの認証機能を追加するプラグインです。

Ruby

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

Ruby on Rails

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

0グッド

0クリップ

投稿2019/12/16 02:54

編集2019/12/16 03:48

https://teratail.com/questions/229498前にこの質問をさせていただいて解決したと思ったのですが、フォローボタンを押してたときに「Routing Error uninitialized constant RelationshipsController」と出てくるときと正常に動作するときがあります。

原因が全くわからないので教えていただけると幸いです。

イメージ説明

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

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

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

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

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

guest

回答2

0

原因が全くわからないので教えていただけると幸いです。

1つ考えられるものとして、「autoloadがうまくいっていない」ということがあります。RelationshipsControllerrelationships_controller.rbという正しいファイルに書かず、別なファイルに書いてしまっていた場合、その「別なファイル」が事前にロードされていれば動く、という挙動になります。

投稿2019/12/16 03:00

maisumakun

総合スコア145975

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

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

退会済みユーザー

退会済みユーザー

2019/12/16 03:45

relationships_controller.rb の中身なのですが正しくかけていないでしょうか class RegistrationsController < Devise::RegistrationsController protected def update_resource(resource, params) resource.update_without_current_password(params) end end class RelationshipsController < ApplicationController def create @user = User.find(params[:relationship][:following_id]) current_user.follow!(@user) redirect_to @user end def destroy @user = Relationship.find(params[:id]).following current_user.unfollow!(@user) redirect_to @user end end
maisumakun

2019/12/16 03:54 編集

> 正しくかけていないでしょうか RegistrationsControllerをrelationships_controller.rbの中に書くのが正しくないです。
退会済みユーザー

退会済みユーザー

2019/12/16 03:59

RegistrationsController はrelationships_controller.rbではなくrelation_ships_controller.rbに書くのが正しいとうことですか?
maisumakun

2019/12/16 04:17

RegistrationsControllerは、registrations_controller.rbというファイルの中に書くべきものです。
退会済みユーザー

退会済みユーザー

2019/12/16 04:22

registrations_controller.rbに書いたのですが動作は前と同じでした。 まだ他に問題があるのでしょうか
退会済みユーザー

退会済みユーザー

2019/12/16 04:26

いろいろ試してみたのですがhttp://localhost:3000/users/editにアクセスしたあとフォローボタンを押すと正しく動作することがわかりました。
maisumakun

2019/12/16 04:34

逆に、「RelationshipsController」というものは存在しますか?
退会済みユーザー

退会済みユーザー

2019/12/16 04:35

ありませんでした。
maisumakun

2019/12/16 04:42

とすれば、「間違えてRelationshipsControllerを呼ぶようなリンクを作成してしまっている」ことが問題かと思います。
退会済みユーザー

退会済みユーザー

2019/12/16 04:49

リンクをRegistrationsControllerを呼ぶようにしたらいいということですか?
guest

0

ベストアンサー

前回の質問 というのは私が回答したやつだと思いますが、
このとき
registrations_controller.rb に class RelationshipsController
を書いていたのを指摘して  relation_ships_controller.rb に書くように変更した。
そのあと
Unable to autoload constant RegistrationsController, expected /Users/〇〇/Site/〇〇/app/controllers/registrations_controller.rb to define it
がでたので、

registrations_controller.rb の中身を壊してしまったのでは?と思われます。
registrations_controller.rb には RegistrationsController が定義されていなければならないのに、RelationshipsController が定義されています

とコメントして、解決した とありましたね?
なのに今回maisumakunさんの質問に、「RelationshipsController」というものは存在しますか? に対し「ありません」 とあるのですが、 ???

registrations_controller.rb に RegistrationsController を
relation_ships_controller.rb に RelationshipsController を
定義するようになっていますか?

投稿2019/12/16 07:28

編集2019/12/16 07:28
winterboum

総合スコア23567

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

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

退会済みユーザー

退会済みユーザー

2019/12/16 09:26

registrations_controller.rb class RegistrationsController < Devise::RegistrationsController protected def update_resource(resource, params) resource.update_without_current_password(params) end end end relation_ships_controller.rb class RelationshipsController < ApplicationController def create @user = User.find(params[:relationship][:following_id]) current_user.follow!(@user) redirect_to @user end def destroy @user = Relationship.find(params[:id]).following current_user.unfollow!(@user) redirect_to @user end end になっていますがRouting Error uninitialized constant RelationshipsControllerが出てしまいます。
winterboum

2019/12/16 10:02

いかん、RelationShips と思い込んでた relationships_controller.rb に改名してください
退会済みユーザー

退会済みユーザー

2019/12/16 10:21

名前変えたら出来ました!
winterboum

2019/12/16 10:29

ごめん、思い込みで振り回してしまいました で、 今回を教訓に、class名とfile名をきちんと合わせるというのを確実に。 rails g controller を使って作っていればこういうことは起きないのですが
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問