0

我有两个模型,它的关联表以belongs_to 和has_many 关系链接在一起。

这是架构

ActiveRecord::Schema.define(version: 20130827203308) do

  # These are extensions that must be enabled in order to support this database
  enable_extension "plpgsql"

  create_table "posts", force: true do |t|
    t.text    "message"
    t.integer "student_id"
  end

  add_index "posts", ["student_id"], name: "index_posts_on_student_id", using: :btree

  create_table "students", force: true do |t|
    t.string   "first_name"
    t.string   "last_name"
    t.string   "email"
    t.string   "number"
    t.string   "college"
    t.string   "password"
    t.float    "budget"
    t.string   "picture"
    t.datetime "created_at"
    t.datetime "updated_at"
  end

end

我可以去 Rails 控制台做

a = Student.find(1)
c = a.posts.create(:message => "testing")
c.save!

(0.4ms)  BEGIN
   (0.4ms)  COMMIT
 => true 

我不知道如何在视图中将其绘制回来。我也不知道如何在 Rails 控制台中将其拉回。

我的 index.html.erb 视图中有

Message: <%= @student.posts.message %>

@student = Student.find(1)我的控制器中

并得到

undefined method `message'

在我的本地主机:3000

它不是一种方法。我正试图从我的桌子上画一些东西。

4

1 回答 1

3

@student.posts返回属于此特定 Student 对象的 Post 对象列表。

您需要遍历学生的每个帖子以显示其消息:

student = Student.first # retrieves the first Student of the DB
posts = student.posts # retrieves the student's posts
posts.each do |post| # loop through each post of the student
  puts post.message # outputs the content of the message attribute of the post
end

在视图中,这将是相同的:

Student: 
<%= @student.first_name + ' ' + @student.last_name %>

Posts: 
<% @student.posts.each do |post| %>
  Post #<%= post.id %>
  Message: <%= post.message %>
<% end %>
于 2013-08-28T15:46:01.590 回答