これは二重の投稿のように見えて申し訳ありませんが、他の多くのスレッドを見て、自分が何をしているのか理解できません。
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
これにより、フォームには正しい値のチェックボックスがありますが、保存されません。私は自分が何をしているのかわかりません。誰か私が何をしなければならないか説明できますか?