Rails:如何在发布后保存表单数据
当我使用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