2012-12-01 2 views
4

레일스 애플리케이션에서 사용자 경로를 설정하는 데 문제가 있습니다.사용자 경로 - 레일

routes.rb에서 나는 resources :users을 추가했습니다.

class UsersController < ApplicationController 
    def new 
    end 

    def show 
    @user = User.find(params[:id]) 
    end 
end 

그리고 라인의 새로운 show.html.rb 파일을 만든 : users_controller.rb에서

TestApp::Application.routes.draw do 
    resources :users 

    root :to => 'xxx#home' 
    match '/about', to: 'xxx#about' 
    match '/test', to: 'xxx#test' 
    match '/news', to: 'xxx#news' 
    match '/signup', to: 'users#new' 

end 

나는 추가

<%= @user.name %>, <%= @user.email %> 

을하지만 Heroku가에 배포하고있을 때 나는이 정보를 얻었고 나는 그 페이지를 볼 수 없다.

heroku[router]: at=info method=GET path=/users/1 

이 문제가 해결되었거나 잘못되었습니다.

+0

AFAIK, 작동해야합니다. 그 통나무는 뭐라고 말합니까? –

+0

Heroku 로그 : heroku [라우터] : = 정보 메서드 = GET 경로 =/users/1 호스트 = testapp.herokuapp.com fwd = 78.0.234.91 dyno = web.1 대기열 = 0 대기 = 0ms 연결 = 1ms 서비스 = 25ms 상태 = 404 바이트 = 728. 페이지가로드 될 때 500 오류가 발생합니다. DB에 추가 된 사용자가 없기 때문에 id : 1 인 사용자가 있기 때문에 생각했습니다. – netman

+0

로그에만 표시됩니까? 일반적으로 로그에는 스택 추적이 있습니다. –

답변

1

id=1의 사용자가 영웅에 있는지 확인 하시겠습니까? 그렇다면 사용 했습니까?

$ heroku run console 

이 명령은 프로덕션 환경에서 레일 콘솔을 표시합니다. 그것 안에서, 당신은 그런 것을 했습니까?

u = User.create(somehash_with_attrs) 
# .. or 
u = User.new 
# ... 
u.save 
u.id # => 1 or 23 
# If your are not sure which id your user has try the following 
User.first.id 

는 그리고 당신은 id=1하지 데이터베이스의 첫 번째 레코드와 사용자 레코드에 그 yourapp.domain/users/1 점을 알지 못했다.

+0

솔루션 : heroku 실행 콘솔. 개발 환경에서 사용자에게 접근 할 수 있지만 프로덕션 환경에서 db는 @m_x와 같이 비어 있습니다. 사용자가 직접 프로덕션에 추가해야합니다. 모든 데이터가 준비 될 것으로 생각했습니다. 위를 사용하다 th "heroku run rake db : migrate"명령을 개발 환경에서 사용 하시겠습니까? – netman

+1

db 데이터는 각 환경에 대해 완전히 분리되어 있습니다. 귀하의 응용 프로그램이 귀하의 DB에있는 데이터에 대한 가정을한다면 seed.rb를 작성하는 것이 좋습니다 - http://railscasts.com/episodes/179-seed-data – krichard

0

마이그레이션 파일을 보겠습니다. PG는 Users (복수에 중점)라는 테이블을 찾을 수 없습니다. 따라서 마이그레이션을 실행 한 후 테이블을 찾는 것처럼 보입니다.

콘솔에서 사용자를 어떻게 만들었습니까? u = User.new 또는 u = User.build를 사용했다면 u.save를 사용하여 실제로 데이터베이스에 저장되었는지 확인하십시오.