0
我還是新的紅寶石在軌道上,我真的被阻止。 我想添加鏈接的書籍和作者到數據庫,它添加在兩個表中的記錄,但不是加入一個。這是我的代碼:使用HABTM協會添加記錄
books_controller.rb
class BooksController < ApplicationController
def index
@books= Book.all
end
def new
@book= Book.new
end
def create
@book= Book.new(book_params)
if @book.save
redirect_to books_path
else
redirect_to root_url
end
end
private
def book_params
params.require(:book).permit(:title, {:author_ids =>[]})
end
end
book.rb
class Book < ActiveRecord::Base
has_and_belongs_to_many :authors
before_destroy { authors.clear }
end
author.rb
class Author < ActiveRecord::Base
has_and_belongs_to_many :books
end
書籍/ new.html.erb
<h1>Add new book</h1>
<%= form_for @book do |f| %>
<%= f.label :title %>
<%=f.text_field :title %>
<% for author in Author.all %>
<%= check_box_tag 'book(author_ids[])',author.id, @book.authors.include?(author) %>
<%= author.f_name %>
<% end%>
<%= f.submit %>
<%end%>
是的!非常感謝:)請問能向我解釋書[author_ids] []的用途是什麼,因爲我只是遵循tutorialand我無法理解 – rota90 2014-10-29 22:32:24
這是您在Rails中定義表單字段的方式。我的意思是讓'<%= f.text_field:title%>'將您的字段名稱定義爲'book [title]'。對於控制器'params [:book] [:title]#=>中的該字段,返回形式給出的書名[現在,更復雜的情況,'book [author_ids] []'。這意味着你想發送一個'ids'到你的控制器。這在定義多值字段時非常有用(例如,書可能有許多作者)。這樣的定義在你的控制器中通過'params [:book] [:author_ids]'進行訪問並返回數組。 – blelump 2014-10-29 22:47:48