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

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

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

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

Q&A

解決済

2回答

2470閲覧

RuntimeError in RecordController#find

K_T_T_K

総合スコア231

Ruby on Rails

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

0グッド

0クリップ

投稿2014/12/30 14:52

Ruby on Rails初心者です。

ローカルのMacにRailsの環境を構築しています。

app/controller/にrecord_controller.rbというファイルを作り次を記述しました。

def find
@books = Book.find([1,2,3])
render 'hello/list'
end
そこで、localhost:3000/record/find
にアクセスしたところ、

lang

1Circular dependency detected while autoloading constant RecordController

とエラーが出ました。
これの原因は何なのでしょうか?

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

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

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

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

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

guest

回答2

0

ベストアンサー

Ruby on Rails初心者です。

Ruby on Railsは「設定より規約(Conversion over Configuration)」という思想があります。
つまり、ファイル名、ファイルの配置場所、クラス名がとても重要になっています。

あなたの設定がわからなかったので自分で同じようなことをしてみました。
クラス名やファイルのパスに十分に注意してください。

Railsプロジェクトを作成

lang

1$ rails new record_project

Bookのモデルファイルとマイグレーションファイル(DBにテーブルを作成するファイル)を作成する。

$ rails g model Book name invoke active_record create db/migrate/20150101214634_create_books.rb create app/models/book.rb

マイグレーションを実行する。booksテーブルが作成される。

$ rake db:migrate == 20150101214634 CreateBooks: migrating ====================================== -- create_table(:books) -> 0.0014s == 20150101214634 CreateBooks: migrated (0.0014s) =============================

RecordControllerを作成する。コントローラーファイル内にfindというアクション(メソッド)を定義し、ルートにもfindを追加する。さらにfindというビューファイルを作成する。

$ rails g controller record find create app/controllers/record_controller.rb route get 'record/find' invoke erb create app/views/record create app/views/record/find.html.erb ...

ルート定義ファイル:config/routes.rb
変更なし(上記のrails gコマンドで自動で作成される)

lang

1Rails.application.routes.draw do 2 get 'record/find' 3end

モデルファイル:app/models/book.rb
変更なし(上記のrails gコマンドで自動で作成される)

lang

1class Book < ActiveRecord::Base 2end

コントローラーファイル:app/controllers/record_controller.rb
ロジックを実装する

lang

1class RecordController < ApplicationController 2 def find 3 @books = Book.find([1,2,3]) 4 render 'hello/list' 5 end 6end 7

ビューファイル:app/views/hello/list.html.erb
ビューで表示したい内容を記載する

lang

1<h1>hello/list.html.erb</h1> 2 3<ul> 4 <% @books.each do |book| %> 5 <li><%= book.name %> 6 <% end %> 7</ul> 8

レコードを3件登録する

$ rails console irb(main):001:0> Book.create name: "book 1" irb(main):002:0> Book.create name: "book 2" irb(main):003:0> Book.create name: "book 3" irb(main):004:0> exit

$ rails server でサーバーを起動し、localhost:3000/record/find にアクセスする
![イメージ説明]WIDTH:600

投稿2015/01/01 22:06

shoji

総合スコア85

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

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

K_T_T_K

2015/01/02 14:53

ありがとうございます。 大変参考になりました。
guest

0

可能であれば、ここまでの操作手順や、コントローラ以外の、ビューやモデルのソースコードの一部をご提示いただけると、問題解決につながる回答が得られるかもしれません


投稿2014/12/30 18:23

gouf

総合スコア2321

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問