Ruby on Rails显示嵌入式模型

时间:2013-05-06 21:54:06

标签: ruby-on-rails ruby

嘿,这可能是一个非常简单的问题,但我似乎无法显示我的show.html.erb页面,我是一个真正的初学者。这是用铁轨上的红宝石制成的。这是我的代码:

Post.rb

class Post < ActiveRecord::Base
  attr_accessible :artist
  has_many :songs
end

Song.rb

class Song < ActiveRecord::Base
  attr_accessible :lyric, :name, :song_id
  belongs_to :post
end

CreatePost迁移

class CreatePosts < ActiveRecord::Migration
  def change
    create_table :posts do |t|
      t.string :artist
      t.string :song

      t.timestamps
    end
  end
end

CreateSong Migrate

class CreateSongs < ActiveRecord::Migration
  def change
    create_table :songs do |t|
      t.text :lyric
      t.string :name
      t.integer :song_id

      t.timestamps
    end
  end
end

show.html.erb

<center><h1><%= @post %></h1></center>
<p> Songs: </p>
<% @post.song.song_id.each do |s| %>
    <p>
        <%= s.name %>
    </p>
<% end %>
<% form_for [@post, Song.new] do |f| %>
  <p>

    <%= f.label :name, "Artist" %><br />
    <%= f.text_field :name %><br />
    <%= f.label :body, "Song Name:" %><br />
    <%= f.text_field :body %>
  </p>

  <p>
    <%= f.submit "Add Song" %>
  </p>
<% end %>

1 个答案:

答案 0 :(得分:0)

看起来你错过了控制器。

Ruby on Rails中的控制器对模型和视图之间的数据进行编组。

我建议你可能想在app / controllers文件夹中创建一个控制器,如:

class PostsController < ApplicationController

  def show
    @post = Post.find(params[:id])
  end
end

您还需要确保在路径文件中设置了帖子资源。

在config / routes.rb文件中,您可以输入

resources :posts

这告诉Rails / posts url引用了posts控制器。

RoR入门对于所有各种移动部件来说可能有点棘手。我强烈推荐railscasts.com作为简短的教程片段。同样peepcode.com以获得更深入的指示。