0

我正在尝试导入四个数据字段。Child_id, First_name, Last_name, Medical. 以我的形式,它只是拉进来child_id

<%= form_for @check_in, :url => {:controller => 'check_ins', :action => 'create' } do |f| %>
  <% @account.children.each do |child| %>
    <%= f.check_box :child_id, {:checked => 'checked', :multiple => true}, child.id.to_s %>
    <%= image_tag child.photo.url(:thumb) %>
    <span class="name"><%= child.first %>
    <%= child.last %></span><br/>
  <% end %>
<% end %>

模型关联:

class CheckIn < ActiveRecord::Base
  has_many :children    
end

class Child < ActiveRecord::Base
  belongs_to :account
  belongs_to :check_in
end

这是我在 check_ins 控制器中的创建方法。

def create @check_in = CheckIn.new(params[:check_in])

begin
  params[:check_in] [:child_id].each do |child_id|
    unless child_id == 0.to_s
      CheckIn.new(:child_id => child_id).save!
    end
  end
  respond_to do |format|
      format.html { redirect_to(:controller => 'sessions', :action => 'new') }
      format.json { render json: @check_in, status: :created, location: @check_in }
  end
rescue
  respond_to do |format|
      format.html { render action: "new" }
      format.json { render json: @check_in.errors, status: :unprocessable_entity }
  end
end

结尾

该表格也在展示页面上。复选框在那里,复选框旁边是从另一个表中提取的信息:child.first, child.last。但是那些我想与复选框一起被选中的字段child_id是。

现在我有一个孩子保存在我的表中,其 id 为 8,它会拉入 8,但字段child.firstchild.last没有拉入 id 所在的新表中。

4

2 回答 2

0

嗯,“导入数据字段”是指在表单中显示子项的属性?表格对我来说看起来不错,现在它取决于此表格之外的东西。

我会检查以下内容:

  • child 的字段是否确实已命名firstlast并且photo在代码片段中使用,并且与您在问题中列出的那些相反?
  • @account和的内容是@account.children什么?你可以在你的页面上输出两者来检查。
于 2012-07-27T12:46:00.017 回答
0

我在您的表单块中只看到一个表单标签:f.check_box :child_id. 其他类似的东西<%= child.first %>不是表单的一部分,即使它们在表单块内。

编辑:

有很多问题。首先,严格按照关联建立的方式,CheckIn 不应该有 child_id 属性。它 has_many :children 而 Child belongs_to :check_in。CheckIn 不应该有 child_id,Child 应该有 check_in_id。因此,您应该使用 check_in_id 值更新每个选定的孩子。我会阅读 ActiveRecord 关联: http: //guides.rubyonrails.org/association_basics.html

其次,表单呈现控件的方式我认为您最终会得到多个具有相同名称的复选框。当 rails 组装 params 散列时,它将忽略除最后一个具有特定键的散列项之外的所有项。因此,即使其他一切设置正确,您仍然只能保存一个孩子进行签到。我会观看有关嵌套属性的本教程: http ://railscasts.com/episodes/196-nested-model-form-第 1 部分?view=asciicast

最后,当您说它不保存 child.first 和 child.last (又名 first_name 和 last_name?)时,我不明白您的意思。该信息已经存储在子对象中,对吗?为什么要保存在其他地方?

如果所有这些都正常工作,您将能够执行以下操作:

# find an account
account = Account.find(99)

# create a check_in
check_in = CheckIn.create

# save one or more (or all) of account's children to the check_in
check_in.children << account.children

# see the first name of a child associated with a check_in
check_in.children[0].first
于 2012-07-27T14:12:58.137 回答