Rails - 如何显示数据库中的数据

时间:2011-03-17 22:36:59

标签: ruby-on-rails-3 activerecord

我对Rails相当新,我只是想在页面上的sqlite3数据库中显示记录的user_id。这是我的代码:

模型

class User < ActiveRecord::Base
  set_primary_key :user_id
  has_one :user_id
end

控制器

class HomeController < ApplicationController
  def index
    @users = User.find(0)
  end
end

视图

<%= User.users.user_id %>

我确定我犯了一个愚蠢的错误。

4 个答案:

答案 0 :(得分:3)

如果你只想要一个用户对象的UID,那么让rails对你进行排序是相当标准的,所以你只需生成表所需的属性而不包括user_id。但是,你可能希望这个user_id在这种情况下忽略我刚才所说的内容。 你不需要has_one关系,除非你有另一个名为user_id的模型(我猜这是可能的)

索引方法通常用于返回所有用户,或者至少是一个子集(例如,如果使用分页),因此我建议在索引方法中使用以下内容

User.find :all  

注意我已经关闭了括号,它没有什么区别,但它是一个rails约定(它使它看起来更像DSL)。

要返回1个用户,您可能需要这样的方法

# GET /posts/1
def show
   @user = User.first      
end

但约定规定id将由发送的url指定,因此它可能看起来更像是

# GET /posts/1
def show
   @user = User.find params[:id]      
end

如果您随后访问了一个类似于上面指定的方法的show方法(/ posts / 1,其中1是ID)

此方法的视图应如下所示:

<%= @user.user_id %>

注意@user是show方法传递给视图的成员变量,在这种情况下是id为1的用户的实例,并且您正在访问该实例的user_id属性,因此您不需要User.因为这将调用类方法而不是用户对象实例的方法。

要回答您的具体问题,它应该更像

模型

class User < ActiveRecord::Base
  set_primary_key :user_id
end

控制器

class HomeController < ApplicationController
  def show
    @user = User.first
  end 
end

使用/ users / 0

访问show视图

视图将包含

<%= @user.user_id %>

编辑:

要显示登录的用户,您可能需要一个用户会话对象,该对象是在用户登录时创建的,并在用户注销时销毁。用户会话对象应具有关联的用户对象,然后您可以查询user_session对象以记录哪个用户。

我强烈建议使用authlogic,这很简单,可以知道最新情况但是这个技巧

答案 1 :(得分:2)

或者在您看来:

<% User.all.each do |user| %>
  <%= user.id %>
<% end %>

这将打印出User

中所有记录的user_id

答案 2 :(得分:0)

您确定User.find(0)在这里吗? ID不是以一个开头的吗?为了安全起见,请

@user = User.first

在视图中,您可以

<%= @user.user_id %>

答案 3 :(得分:0)

打印整个数据库使用;

Model.all

e.g

User.all