0

我只是想知道我应该如何构建一个 bookManager 。他所遵循的模型

|-------------|1---------*|-------------|
| Customer    |           | BookManager |
|-------------|           |-------------|
| ID          |           | ID          |
| First       |           | customer_id |
| Last        |           | isDeleted   |
| Email       |           | isVisible   |
| Password    |           | description |
|-------------|           |-------------|

关联如下

class Customer < ActiveRecord::Base
# RELATIONSHIP
    has_many :book_managers
    accepts_nested_attributes_for :book_managers, allow_destroy: :true
    attr_accessible :admin, :first_name, :last_name, :middle_name, :email, :email_confirmation, :password, :password_confirmation, :image, :book_managers_attributes,  :locale
end

class BookManager < ActiveRecord::Base
    belongs_to :customer
    attr_accessible :customer_id, :visible, :description
end

表单就像这样 Customer#edit 视图

  <h3>Book</h3>
  <div><%= render 'book_managers/form' %></div>

BookManagers/表格

<%= form_for(@book_manager) do |f| %>
  <fieldset>
    <%= f.label :description %>
    <%= f.text_field :description %>
  </fieldset>

  <fieldset>
    <%= f.check_box :visible %>
    <%= f.label :visible %>
  </fieldset>

  <div class="actions">
    <%= f.submit %>
  </div>

这是大奖的难题。控制器 目前我在 BookManager 控制器中什么都没有,因为它的调用者往往拥有数据信息。但我真的对客户控制器感到困惑。

我想要的是关联并填写 BookManager 与客户及其属性。这就是我现在所拥有的。

客户控制器

        @customer = Customer.find(params[:id])

#       @book_manager = BookManager.new
#       bm = @customer.book_managers.build
#       bm.books.build

        @book_manager = @customer.book_managers.build
4

1 回答 1

0

使用名为 fields_for 的东西来构建子模型

<%= form_for @customer do |customer_form| %>
  First name: <%= customer_form.text_field :first_name %>
  Last name : <%= customer_form.text_field :last_name %>
  <%= fields_for @book_manager do |book_manager_fields| %>
    Admin?  : <%= book_manager_fields.check_box :admin %>
  <% end %>

  <%= f.submit %>
<% end %>

这种性质的东西。因此,当您提交时,它会将所有数据一起发布在您的参数上。

@customer.save还可以节省图书管理员

于 2012-08-10T00:22:55.410 回答