如果表單驗證失敗,爲的has_many關聯領域,從視野中消失:巢老人的屬性,如果表單驗證失敗
我的新動作看起來像
def new
@realty = Realty.new
@realty.build_user
@realty.build_address
#user, address are has_one association, and they stay in view after failed validation
6.times { @realty.realty_images.build } # and this one vanishes away
respond_to do |format|
format.html # new.html.erb
format.json { render json: @realty }
end
end
如果我添加到我的形成這個片段
- if @realty.realty_images.empty?
- 6.times { @realty.realty_images.build }
領域會再次顯示,但它是一個有點粗糙
我試圖
6.times { @realty.realty_images.build } if @realty.realty_images.empty?
或
6.times { @realty.realty_images.build }
6.times { @realty.realty_images.build } if @realty.realty_images.empty?
在控制器
,但它沒有工作,和田野上驗證失敗再次消失。
創建行動:
def create
@realty = Realty.new(params[:realty])
respond_to do |format|
if @realty.save
format.html { redirect_to @realty, notice: 'Realty was successfully created.' }
format.json { render json: @realty, status: :created, location: @realty }
else
format.html { render action: "new" }
format.json { render json: @realty.errors, status: :unprocessable_entity }
end
end
end
我 - 體
= simple_form_for(@realty) do |f|
= f.error_notification
.form-inputs
= f.input :offer_type
= f.input :realty_type
= f.input :rent_type
= f.input :price
= f.input :description
= f.input :state, as: :hidden
= f.input :number_of_rooms
= f.input :floor
= f.input :service, as: :hidden
= f.simple_fields_for :address do |address_f|
= address_f.input :city, :required => true
= address_f.input :state, :required => true
= address_f.input :street, :required => true
- unless user_signed_in?
= f.simple_fields_for :user do |user_f|
= user_f.input :name, :autofocus => true, :required => true
= user_f.input :phone, :required => true
= user_f.input :email, :required => true
= user_f.input :password, :required => true
= user_f.input :password_confirmation, :required => true
- if @realty.realty_images.empty?
- 6.times { @realty.realty_images.build }
= f.simple_fields_for :realty_images do |image_f|
= image_f.input :image, as: :file
.form-actions
= f.button :submit
房地產模型
class Realty < ActiveRecord::Base
attr_accessible :description, :floor, :user_id, :number_of_rooms, :price, :service, :state, :realty_images_attributes, :address_attributes, :user_attributes, :offer_type, :realty_type, :rent_type
belongs_to :user, :dependent => :destroy, :class_name => "User"
has_many :realty_images, :dependent => :destroy
has_one :address, :dependent => :destroy
validates :offer_type, :presence => true, :length => { :in => 1..256 }
validates :realty_type, :presence => true, :length => { :in => 1..256 }
validates :state, :presence => true, :length => { :in => 1..256 }
validates :description, :length => { :maximum => 2000 }
validates :service, :presence => true, :length => { :in => 1..256 }
accepts_nested_attributes_for :realty_images
accepts_nested_attributes_for :user
accepts_nested_attributes_for :address
end
請顯示#create,這是關鍵。 – 2013-05-07 07:19:04
我把它添加到我的問題。但它是相當標準:) – 2013-05-07 07:26:44
似乎不好。你沒有邏輯來保存創建的用戶,地址和圖像? – 2013-05-07 07:35:45