레일에 컨트롤러 생성
-
06-07-2019 - |
문제
생성 스크립트를 사용하여 컨트롤러를 작성하려고합니다. 다음 명령을 실행합니다.
> ruby script/generate controller Greeting
그리고 컨트롤러는 아무런 문제가없는 것 같습니다. 그런 다음 GreetingController에 색인이라는 메소드를 추가합니다.
class GreetingController < ApplicationController
def index
render :text => "<h1>Welcome to your first Rails application<h1>"
end
end
그런 다음 Webrick 웹 서버를 시작하고 내 브라우저를 http://127.0.0.1:3000/greeting, 그러나 브라우저에서 오류 메시지가 표시됩니다.
We're sorry, but something went wrong.
We've been notified about this issue and we'll take a look at it shortly.
적어도 내가 읽고있는 책에 따르면 작동해야합니다. O'Reilly의 Ruby on Rails. 무엇이 잘못 될 수 있는지 아십니까? 이 책은 몇 년 전에 쓰여졌 고, 아마도 새로운 버전이나 레일을 사용하고 있습니다. 어떤 아이디어?
업데이트 다음은 개발 중입니다.
/!\ FAILSAFE /!\ Sat Nov 28 22:11:12 -0500 2009
Status: 500 Internal Server Error
no such file to load -- mysql
/usr/local/lib/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require'
/usr/local/lib/site_ruby/1.8/rubygems/custom_require.rb:31:in `require'
/usr/lib/ruby/gems/1.8/gems/activesupport-2.3.5/lib/active_support/dependencies.rb:156:in `require'
참고로 전화를 통해 응용 프로그램을 만들었습니다.
rails /home/myuser/www/mynewapp -d mysql
해결책
MySQL 데이터베이스 드라이버를로드 할 수 없습니다. 설치되지 않은 것 같습니다. 당신은 이것을 시도 할 수 있습니다 :
sudo gem install mysql
나는 당신이 아마 MySQL 데이터베이스가 설정되어 있지 않을 것이라고 생각합니다. 대부분의 사람들은 개발을 위해 sqlite3을 사용합니다. config/database.yml은 다음과 같습니다.
development:
adapter: sqlite3
database: db/development.sqlite3
pool: 5
timeout: 5000
SQLITE3가 설치되어 있지 않은 경우 방금 실행하십시오
sudo gem install sqlite3-ruby
그런 다음 마이그레이션을 실행하면 모두 설정해야합니다.
rake db:migrate
업데이트나는 이것을 여기에 게시하여 일부 형식을 사용할 수있었습니다.
미래에 전화 :
rails /path/to/app
이렇게하면 레일이 SQLITE3 인 기본 데이터베이스를 사용하게됩니다. 그런 다음 배포하기로 결정한 경우 프로덕션 데이터베이스를 변경할 수 있습니다.
행운을 빕니다.
다른 팁
Rails는 데이터베이스를 사용한다고 가정합니다. database.yml에서 유효한 연결 문자열을 제공하지 않으면 게이트에서 바로 질식합니다. 이것은 어떤 이후로 유효한 가정입니다 진짜 웹 앱은 데이터베이스를 사용합니다.
그러나보기와 컨트롤러의 작동 방식을 엉망으로 만들려고한다면 데이터베이스 기능을 완전히 비활성화 할 수 있습니다. 그렇게하려면 구성/환경에 추가하십시오 .RB :
config.frameworks -= [ :active_record ]
귀하가 게시 한 간단한 오류에서 MySQL을 사용하려는 경우 MySQL GEM이 설치되어 있는지 확인할 수 있습니다.
Linux에 있다면 시도해보십시오.
gem install mysql
MySQL 드라이버를로드하려고합니다. config/database.yml을 편집 했습니까? 내 것 같아요 :
# SQLite version 3.x
# gem install sqlite3-ruby (not necessary on OS X Leopard)
development:
adapter: sqlite3
database: db/development.sqlite3
pool: 5
timeout: 5000
또한 Rails, Third Edition을 사용하여 Agile Web Development로 전환하십시오. 그것은 좋은 튜토리얼이며 여전히 2.2로 작성되었지만 여전히 최신 버전의 레일과 함께 작동합니다.
- 로그인 /로그 디렉토리를 확인하십시오. 훨씬 더 나은 오류 정보를 제공합니다.
- 내 생각에 당신은 이중 렌더 오류가 발생하는 것입니다. 즉, 당신이 명시 적으로 렌더링하기 때문에 렌더링 호출 후에 반환 문을 넣어야합니다. - 기본적으로 컨트롤러는 컨트롤러 메소드가 완료된 후 컨트롤러와 일치하는보기를 렌더링하려고합니다.