0

私はbelongs_toアソシエーションでレンダリングされたネストされたフォームを取得するのに苦労しています。Rails 3:belongs_toアソシエーションでレンダリングされたネストされたフォーム

"_form.html.erb"(下記)のアドレスフィールドが正しく表示されることを期待していましたが、明らかにそうではありません。

レールのバージョン:3.09

ここにコードがあります。

モデル:

Store.rb

class Store < ActiveRecord::Base 
    has_and_belongs_to_many :products 
    belongs_to :store_address, :foreign_key => "address_id", :class_name => "Address" 
    ...... 

end 

アドレスは、(それが独立している)

コントローラ

stores_controllerをストアモデルへの参照を持っていません。 rb

def new 
    @store = Store.new 
    @store.build_store_address 
    respond_with(@store) 
    end 

ビュー

new.html.erb

<% form_for(@store, :url => collection_url) do |f| %> 
    <%= render :partial => "form", :locals => { :f => f } %> 
    <p class="form-buttons"> 
    <%= button t('continue') %> 

    </p> 
<% end %> 

_form.html.erb

<%=t(:store_name)%> : <%= text_field :store, :name %> 
<%=t(:store_admin_email)%> : <%= text_field :store, :admin_email %> 

<fieldset> 
    <legend><label><%=t(:address)%></label></legend> 
    <% f.fields_for :store_address do |address_form| %> 
    <table> 
     <tbody><tr> 
      <td width="200"><label><%=t(:line_1)%></label></td><td> 
      <%= address_form.text_area :address1, :rows => 2%> 
      </td> 
     </tr> 
     <tr> 
      <td><label><%=t(:line_2)%></label></td><td> 
      <%= address_form.text_area :address2, :rows => 2 %> 
      </td> 
     </tr> 
     <tr> 
      <td><label><%=t(:city)%></label></td><td> 

      <%= address_form.text_field :city %> 

      </td> 
     </tr> 
....... 

これは、店舗名をレンダリングします。アドレス側には何もありません。助けてください!

+0

これまでに完了しましたか?しかし、私に似たセットアップがありますが、フォームを送信しようとするとstore_addressが作成されません。 – Altonymous

答えて

3

私はあなたが<% f.fields_for ...で=を逃したと思います。 <%= f.fields_for ...である必要があります。

この1つのことを忘れてしまって、なぜネストされたフォームがレンダリングされないのか不思議に思うことがよくありました。

+0

awww ...私はそれが何かばかげていなければならないことを知っていた...それはこの愚かだったとは思わなかった;) – thanikkal

+0

その普通の愚かな、しかし間違って取得するのは非常に簡単です。私は同じ状況を経験した日に私のプログラムを放棄した。 :) – rookieRailer

関連する問題