0

これは二重の投稿のように見えて申し訳ありませんが、他の多くのスレッドを見て、自分が何をしているのか理解できません。

has_and_belongs_to_many を作成しようとしていますが、行き詰まっています。

フォームに正しい情報を表示することはできましたが、保存する方法がわかりません。

私は得た:

オーブクラス:

class Orb < ActiveRecord::Base
  attr_accessible :descr, :id, :nome, :orb_type_id, :orbt

  validates_presence_of :nome, :orb_type_id
  validates :nome, :uniqueness => true

  belongs_to :orb_type

  has_and_belongs_to_many :books
end

ブッククラス:

class Book < ActiveRecord::Base
  attr_accessible :dataf, :datai, :descr, :id, :nome

  validates_presence_of :nome
  validates :nome, :uniqueness => true

  has_and_belongs_to_many :orbs

  # allows project page to add items via checkboxes
  accepts_nested_attributes_for :orbs

end

フォーム:

 <% @book.each do |book| %>
    <div>
      <%= check_box_tag "orb[book_ids][]", book.id, @orb.books.include?(book), id: dom_id(book) %>
      <%= book.nome %>
    </div>
  <% end %>

そしてコントローラー:

def new
  @book = Book.all
  @orb = Orb.new
  respond_to do |format|
    format.html # new.html.erb
    format.json { render json: @orb }
  end
end
# GET /orbs/1/edit
def edit
  @orb = Orb.find(params[:id])
  @book = Book.all
end
# POST /orbs
# POST /orbs.json
def create
  @orb = Orb.new(params[:orb])
  respond_to do |format|
    if @orb.save
      format.html { redirect_to @orb, notice: 'save was successful' }
      format.json { render json: @orb, status: :created, location: @orb }
    else
      format.html { render action: "Novo" }
      format.json { render json: @orb.errors, status: :unprocessable_entity }
    end
  end
end
# PUT /orbs/1
# PUT /orbs/1.json
def update
  params[:orb][:book_ids] ||= []
  @orb = Orb.find(params[:id])
  respond_to do |format|
    if @orb.update_attributes(params[:orb])
      format.html { redirect_to @orb, notice: 'save was successful' }
      format.json { head :no_content }
    else
      format.html { render action: "Editar" }
      format.json { render json: @orb.errors, status: :unprocessable_entity }
    end
  end
end

これにより、フォームには正しい値のチェックボックスがありますが、保存されません。私は自分が何をしているのかわかりません。誰か私が何をしなければならないか説明できますか?

4

1 に答える 1