0

私はレールの初心者です私はある時点で立ち往生しています関連モデルBookとSubjectがあり、Book related_to:SubjectとSubject has_many:books

本のインスタンスを保存するときに件名フィールドを保存するにはどうすればよいですか

本のモデルファイル:book.rb

class Book < ActiveRecord::Base
  attr_accessible :title, :price,:description , :created_at ,:subject
  belongs_to :subject
  validates_presence_of :title
  validates_numericality_of :price, :message=>"Error Message"
end

サブジェクト モデル ファイル:subject.rb

class Subject < ActiveRecord::Base
  attr_accessible :name
  has_many :books

end

私の移行ファイルは本の移行です

class Books < ActiveRecord::Migration
  def self.up
    create_table :books do |t|
      t.column :title, :string, :limit => 32, :null => false
      t.column :price, :float
      t.column :subject_id, :integer
      t.column :description, :text
      t.column :created_at, :string
    end
      Book.create :title =>"book1",:price =>500 , :description=>"book 1 created" , :created_at=>"12/12/12"
      Book.create :title =>"book2",:price =>111 , :description=>"book 2 created" , :created_at=>"12/12/12"
      Book.create :title =>"book3",:price =>222 , :description=>"book 3 created" , :created_at=>"12/12/12"
      Book.create :title =>"book4",:price =>333 , :description=>"book 4 created" , :created_at=>"12/12/12"
      Book.create :title =>"book5",:price =>444 , :description=>"book 5 created" , :created_at=>"12/12/12"
  end

  def self.down
    drop_table :books
  end
end

被験者の移動

class Subjects < ActiveRecord::Migration
  def self.up
    create_table :subjects do |t|
      t.column :name, :string
    end
    Subject.create :name => "Physics"
    Subject.create :name => "Mathematics"
    Subject.create :name => "Chemistry"
    Subject.create :name => "Psychology"
    Subject.create :name => "Geography"
  end

  def self.down
    drop_table :subjects
  end
end

私のnewBook html.erb

<html>
    <head>
        <title> new Book </title>
    </head>
    <body>
        <h1><%= @hello_message %></h1>
        <h1>Add new book</h1>
        <%= form_tag :action => 'create' %>
        <p>
            <label for="book_title">Title</label>:
            <%= text_field 'book', 'title' %>
        </p>
        <p>
            <label for="book_price">Price</label>:
            <%= text_field 'book', 'price' %>
        </p>
        <p>
            <label for="book_subject">Subject</label>:
            <%= collection_select(:book,:subject_id,@subjects,:id,:name) %>
        </p>
        <p>
            <label for="book_description">Description</label>
            <br/>
            <%= text_area 'book', 'description' %>
        </p>
        <%= submit_tag "Create" %>
        <%= form_tag %>
        <%= link_to 'Back', {:action => 'list'} %>
    </body>
</html>

作成アクションで保存しようとすると 、保護された属性を一括割り当てできません: subject_id と表示されます

4

2 に答える 2

1

Book モデルでは、次のものが必要です。

 attr_accessible :title, :price, :description, :created_at, :subject_id
于 2013-06-06T11:58:51.663 に答える