在rails的ActionView::Helpers::FormHelper中有一个form_for方法,文档如下:
[code="ruby"]
# Note: a @person variable will have been created in the controller.
# For example: @person = Person.new
<% form_for :person, @person, :url => { :action => "create" } do |f| %>
<%= f.text_field :first_name %>
<%= f.text_field :last_name %>
<%= submit_tag 'Create' %>
<% end %>
[/code]
我怎么发现这个@person没有任何用处。例如:
[code="ruby"]
class PersonController < ApplicationController
def get
end
def update
@person1=Person.create params[:person]
if @person1.save
flash[:message]="更新成功啦!"
end
end
[/code]
下面是get.erb文件
[code="ruby"]
<% form_for :person,@person,:url => { :action => "update" } do |f| %>
Name: <%= f.text_field :name %>
Address : <%= f.text_field :address %>
<%=submit_tag '提交' %>
<% end %>
[/code]
@person1=Person.create params[:person]
这个就直接创建了..然后你又SAVE一次..
而且看完之后依旧不知道你要问些什么
@person的作用是
如果有预定义值的话
会在对应项上有相应数据
例如你数据库默认定义name为"xxx"
那么你new一个@person后他就会在页面上的name文本框显示xxx
刚才跑了楼主的程序,
我揣测楼主的意思是,为什么不能够更加页面的输入更新数据库的数据
如果,是这样的话,我建议你改成如下:
[code="ruby"]
class PersonController < ApplicationController
def get
end
def update
@person1 = Person1.new()
if @person1.update_attributes(params[:person1])
flash[:message]="更新成功啦!"
end
end
[/code]
btw: 刚才person表给我闹的很烦,硬是建立个people表^_^