查看来自使用外键连接的不同表的数据

时间:2011-06-16 13:45:33

标签: ruby-on-rails-3

对于我的项目,我尝试了解如何让来自不同表的单个视图的数据视图。我试图实现Ruby on Rails教程(http://ruby.railstutorial.org/chapters/user-microposts#sec:a_micropost_model)的例子。 在这个例子中,我能够在用户的页面上看到用户的微博。那我在做什么?

  1. 我为用户生成了一个表 rails generate scaffold user name:string + rake db:migrate
  2. 我使用rails generate scaffold micropost content:string user_id:integer
  3. 为微博生成了一个表格
  4. 我添加到 db / migrate /..._ create_microposts.rb def self.up (...) add_index :microposts, :user_id add_index :microposts, :created_at end
  5. 我将外键/主键关系添加到微博 - 模型 belongs_to :user &用户模型 has_many :microposts
  6. rake db:migrate
  7. 我更改了用户-Express-html-View: app / views / users / show.html.erb <% unless @user.microposts.empty? %> <%= render @microposts %> < %end% >
  8. 对于命令“render”,我使用内容<% = micropost.content %> posted <% = time_ago_in_words(micropost.created_at)%> ago
  9. 对微页面 app / views / microposts / _micropost.html.erb 进行了分页

    我已经填写了一些内容,rails控制台说rails已经知道两个表之间的链接。 无论如何,如果我打开show动作,我会收到一些错误:


    NoMethodError in Users#show
    
    Showing c:/src/script/testtest2/app/views/users/show.html.erb where line #13 raised:
    
    undefined method `model_name' for NilClass:Class
    
    Extracted source (around line #13):
    
    10:  </p>
    11: 
    12: <% unless @user.microposts.empty? %>
    13:     <%= render @microposts %>
    14: <% end %>
    15:  
    16: <%= link_to 'Edit', edit_user_path(@user) %> |
    
    Rails.root: c:/src/script/testtest2
    Application Trace | Framework Trace | Full Trace
    
    app/views/users/show.html.erb:13:in `_app_views_users_show_html_erb___161211003_22878180__702430867'
    app/controllers/users_controller.rb:18:in `show'
    
    Request
    
    Parameters:
    
    {"id"=>"1"}
    

    看起来rails不喜欢“渲染”,所以我做错了什么?不幸的是,我跳过了本教程的一些章节,因为我只是想知道如何在用户显示页面上列出微博。我需要定义更多吗?在本教程中,有更多的代码,但是这段代码还包含了很多css-Stylesheet的定义,所以我很困惑哪些代码对于简单地解决我的问题是非常必要的。

1 个答案:

答案 0 :(得分:0)

将show.html.erb中的<%= render @microposts %>替换为<%= render @user.microposts %>