2012-12-01 32 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来确保它实际上已保存到数据库中。