我正在嘗試創建使用多個模型的多頁表單。我有一個申請人,這個申請人有多個地址(一對多關係)。Rails中的多頁多模式表格
我想的第一頁包含有關申請人的信息,然後頁面後,要對地址(ES)的形式
這是我的時刻:
applicant.rb
has_many :addresses, :dependent => :destroy
accepts_nested_attributes_for :addresses
address.rb
belongs_to :applicant
APPLICA nts_controller.rb:
def new
session[:applicant_params] ||= {}
@applicant = Applicant.new(session[:applicant_params])
2.times do
@[email protected]
end
session[:address_params] = @addresses.attributes
end
def create
session[:applicant_params].deep_merge!(params[:applicant]) if params[:applicant]
session[:address_params] ||= params[:address]
@applicant = Applicant.new(session[:applicant_params])
@applicant.addresses.new(session[:address_params])
if params[:forward_button] or params[:back_button]
@applicant.current_step = session[:applicant_step]
if params[:back_button]
@applicant.previous_step
else
@applicant.next_step
end
session[:applicant_step][email protected]_step
render "new"
else
.....
在新的視圖:
<%= form_for @applicant do |f| %>
<%= render "#{@applicant.current_step}_step", :f => f %>
<p><%= f.submit "Continue", :name => "forward_button" unless @applicant.last_step? %> </p>
<p><%= f.submit "Back", :name => "back_button" unless @applicant.first_step? %></p>
<% end %>
@ applicant.current_step將或者address_step或applicant_step,而這些都是下面:
_applicant_step.html.erb
<div class="field">
<%= f.label :first_name %><br />
<%= f.text_field :first_name ,:width=>'10px', :size=>"20", :maxlength=>"20" %>
</div>
<div class="field">
<%= f.label :middle_name %><br />
<%= f.text_field :middle_name %>
</div>
....
_address_step.html.erb
<%= f.fields_for :addresses do |u| %>
<div class="field">
<%= u.label :address %><br />
<%= u.text_area :address , :cols=> 20, :rows=>5%>
</div>
<div class="field">
<%= u.label :telephone, "Telephone Number" %><br />
<%= u.text_field :telephone %>
</div>
...
就是這樣。現在我的問題是如下,我想保存地址信息以及申請人信息。我以爲只是說:@ applicant.addresses.new那麼他們將被包括在申請人的會話信息,但他們不是(當我接到的地址頁面,沒有任何領域!)。所以我創建了一個新的會話變量來保存地址信息。但我有一個問題。每次我從一個頁面到另一個頁面(在創建操作中),都會創建一個新的地址字段(及其所有屬性)並將其添加到表單中。所以首先我有一個地址,然後我有2個,等等。我是否以這種錯誤的方式去做?怎樣纔可以有一個多頁的形式,用多個模型(即是相關的),並從一個頁面轉到下一個數據不會被刪除..當直到我最終到達最後一頁,我可以提交(並保存)所有的型號..
我將不勝感激,如果任何人都可以幫助.. 謝謝。
我沒有試過一個jQuery的解決方案,謝謝你的鏈接。我希望能找到一個能解決我現有代碼的解決方案,因爲我感覺自己越來越接近了..所以如果有人能夠幫助我以某種方式修復它,那將是一件好事。再次感謝.. – user1069624 2012-02-25 18:53:02