2012-12-01 33 views
4

我在rails應用程序中設置用戶路由時遇到問題。用戶路由 - Rails

In routes.rb我加了resources :users

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 

在users_controller.rb我說:

class UsersController < ApplicationController 
    def new 
    end 

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

而且我已經創造了新的show.html.rb文件用線:

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

但是當我部署到Heroku的我得到這個信息,我看不到那個頁面。

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

有沒有解決這個問題的方法,或者我做錯了什麼?

+0

AFAIK,它應該工作。日誌說什麼? –

+0

Heroku日誌說:heroku [路由器]:at = info method = GET路徑=/users/1 host = testapp.herokuapp.com fwd = 78.0.234.91 dyno = web.1 queue = 0 wait = 0ms connect = 1ms service = 25ms狀態= 404字節= 728。頁面加載時出現500錯誤。我認爲這是因爲在數據庫中沒有添加用戶,但我擁有ID爲1的用戶。 – netman

+0

日誌顯示的是唯一的東西嗎?日誌中通常有一個堆棧跟蹤。 –

回答

1

你確定用戶有id=1存在於heroku嗎?如果是這樣,你使用?

$ 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 

而且你可知道,yourapp.domain/users/1指向用戶記錄與id=1,而不是在數據庫中的第一條記錄。

+0

該解決方案位於:heroku運行控制檯,我可以在開發環境中訪問用戶,但在生產環境中,數據庫爲空,因爲@m_x提到了另外一個問題,必須直接在生產環境中添加用戶,我認爲所有數據都將準備就緒使用無線從開發環境中運行「heroku run rake db:migrate」命令? – netman

+1

db數據爲每個環境完全分離。如果你的應用程序假設你的數據庫中的數據,你可能想寫一個seed.rb - http://railscasts.com/episodes/179-seed-data – krichard

0

讓我們來看看你的遷移文件。 PG找不到名爲Users的表(重點在複數)。所以,在你運行你的遷移之後,它看起來像找到了表。

您是如何在控制檯中創建用戶的?如果您使用過,比如說u = User.new或u = User.build,請確保您使用u.save來確保它實際上已保存到數據庫中。