0

4つのデータフィールドをインポートしようとしています。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コントローラーのcreateメソッドです。

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.firstchild.last。しかし、私が選択したいフィールドは、child_idisのようなチェックボックスと一緒に選択します。

現在、IDが8の子がテーブルに保存されていますが、その子は8をプルしますが、のフィールドchild.firstchild.lastIDが新しいテーブルにプルされていません。

4

2 に答える 2

0

フォームブロックにフォームタグが1つだけ表示されます:f.check_box :child_id。のような他のもの<%= child.first %>は、フォームブロック内にありますが、フォームの一部ではありません。

編集:

多くの問題があります。まず、関連付けの設定方法を厳密に説明すると、CheckInにchild_id属性を含めることはできません。子がbelongs_to:check_inである間、has_many:childrenです。CheckInにはchild_idを含めるべきではなく、Childにはcheck_in_idを含める必要があります。したがって、選択した各子をcheck_in_id値で更新する必要があります。ActiveRecordの関連付けについて読みました:http://guides.rubyonrails.org/association_basics.html

次に、フォームがコントロールをレンダリングする方法は、同じ名前の複数のチェックボックスで終わると思います。railsがparamsハッシュをアセンブルするとき、特定のキーを持つ最後のハッシュ項目を除くすべてを無視します。したがって、他のすべてが正しく設定されていても、チェックインに1人の子しか保存できません。ネストされた属性に関するこのチュートリアルを見ると思います:http: //railscasts.com/episodes/196-nested-model-form- part-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 に答える
0

うーん、「データフィールドのインポート」とは、フォーム内に子の属性を表示することを意味しますか? フォームは私には問題ないように見えますが、今ではこのフォームの外にあるものに依存しています。

私は次のことを確認します。

  • child のフィールドは実際に名前が付けられておりfirst、コードスニペットで使用されているように、質問に記載されているものとは対照的ですか?lastphoto
  • @accountとの中身は@account.children?ページに両方を出力して確認できます。
于 2012-07-27T12:46:00.017 に答える