2010-11-28 59 views
0

當我使用form_for :model時,我提交表單時會保存數據。Rails:如何在發佈後保存表單數據

但是,當我使用form_tag時,表格處理後數據丟失。

我需要使用form_tag,因爲我有一種形式的兩個模型。

有沒有辦法用form_tag保存表單數據?

回答

4

你在你的問題中做了兩個不正確的假設。首先,form_tag不是必要的,甚至不建議用於多模型表單;其次,form_tagform_for沒有任何根本的區別,因此很可能不會正確地爲控制器格式化字段名稱。

爲了創建一個嵌套模型的表單,您需要使用fields_for幫手和form_for。該關係需要先在accepts_nested_attributes_for的模型中定義。因爲你沒有給我們介紹一下你的模型的任何信息,我會給你一個製造的例子:

class Person < ActiveRecord::Base 
    has_one :address 
    accepts_nested_attributes_for :address 
end 

class Address < ActiveRecord::Base 
    belongs_to :person 
end 

這告訴ActiveRecord的這個人模型可以接受的地址屬性,並會沿着屬性的傳遞要創建的正確模型。

<% form_for :person do |p| %> 
    <% p.fields_for :address do |a| %> 
    use the a form builder to create 
    fields for the address model here 
    <% end %> 
<% end %> 

鏈從p表單生成的fields_for幫手讓助手生成正確的格式屬性。

更多信息:Nested Model Forms

+0

謝謝你這個非常詳細的答案。我學到了很多東西,我修好了一切。 – Alex 2010-11-28 10:38:51

3

幾乎和以前一樣,除非你需要構建參數。你可以看看你的日誌,看看如何發送參數。

例如。

def create 
    @silly_hat = SillyHat.new(:name => params[:name], :size => params[:size], :colour => params[:colour]) 
    if @silly_hat.save 
    ... 
+0

那麼我的表單應該如何?我正在使用password_field_tag:密碼,它不起作用。 – Alex 2010-11-28 09:11:10