當我使用form_for :model
時,我提交表單時會保存數據。Rails:如何在發佈後保存表單數據
但是,當我使用form_tag
時,表格處理後數據丟失。
我需要使用form_tag
,因爲我有一種形式的兩個模型。
有沒有辦法用form_tag
保存表單數據?
當我使用form_for :model
時,我提交表單時會保存數據。Rails:如何在發佈後保存表單數據
但是,當我使用form_tag
時,表格處理後數據丟失。
我需要使用form_tag
,因爲我有一種形式的兩個模型。
有沒有辦法用form_tag
保存表單數據?
你在你的問題中做了兩個不正確的假設。首先,form_tag
不是必要的,甚至不建議用於多模型表單;其次,form_tag
與form_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
幾乎和以前一樣,除非你需要構建參數。你可以看看你的日誌,看看如何發送參數。
例如。
def create
@silly_hat = SillyHat.new(:name => params[:name], :size => params[:size], :colour => params[:colour])
if @silly_hat.save
...
那麼我的表單應該如何?我正在使用password_field_tag:密碼,它不起作用。 – Alex 2010-11-28 09:11:10
謝謝你這個非常詳細的答案。我學到了很多東西,我修好了一切。 – Alex 2010-11-28 10:38:51