我通过遵循http://railscasts.com/episodes/196-nested-model-form-revised实现了一个带有模型“作者”的测试应用程序有很多“书籍” 。在我的示例中,我只使用了一个简单的关系,没有别的。
该应用程序运行良好,我可以使用“link_to_add_fields”等动态地向作者添加和删除书籍。保存、修改、删除工作正常。
表格如下所示:
<%= simple_form_for(@author) do |author_form| %>
<%= author_form.input :name %><br />
<%= author_form.input :born %><br />
<h1>Books by this author</h1>
<!-- will Assume @author.books (somehow...) -->
<%= author_form.simple_fields_for :books do |book_fields| %>
<%= render partial: "book_fields", locals: {f: book_fields} %>
<% end %>
<%= link_to_add_fields "Add Book", author_form, :books %>
<%= author_form.submit %>
<% end %>
我还有一个部分“_book_fields.html.erb”,用于编辑视图和 JS 代码。
<fieldset class="book">
<%= f.input :title %><br />
<%= f.input :pages %><br />
<%= f.hidden_field :_destroy %>
<%= link_to "remove", '#', class: "remove_fields" %>
</fieldset>
我还有一个 Cover 字段,我在其中使用 Paperclip 上传图片,但为简洁起见,我将其删除。
我遇到的问题是,现在我想创建一个“将单本书添加到作者”-动作/视图。我无法理解应该如何使用部分。
假设我有一个查找作者 ID 的作者操作,并创建一个空书(使用@author.books.build
?)我如何在视图中显示这样的表单,以便唯一可能的操作是将另一本书添加到作者。书籍阵列?我可以使用现有的部分吗?
假设我想要另一个单独的操作/视图,从作者那里删除书,那将如何工作?