ruby on rails - 嵌套表单

时间:2011-01-03 00:34:40

标签: ruby-on-rails ruby model-view-controller forms models

我有一个设置模型属性的表单,但是,我想通过代码设置一个属性。也就是说,我希望用户设置一些属性,但我希望程序设置其他属性。

有没有办法做到这一点?

示例:

如果我有一个带有“text”列和“user”列的表,我希望用户输入文本,但我希望程序设置“user”列。我该如何做到这一点?

2 个答案:

答案 0 :(得分:2)

不确定。你可以这样做:

 def create
   @something = Something.new(params[:something])
   @something.programmatically_set_attribute = "Some value"  #Here's the part that matters

   respond_to do |format|
     if @host.save
       format.html { redirect_to(@something, :notice => 'Something was successfully created.') }
       format.xml  { render :xml => @something, :status => :created, :location => @something}
     else
       format.html { render :action => "new" }
       format.xml  { render :xml => @something.errors, :status => :unprocessable_entity }
     end
   end
end

在您的表单中,您只需省略您不希望由人手编辑的字段。您还必须更改更新功能。

答案 1 :(得分:0)

如果您想确保只有文本属性可由用户更新,您可能希望使用attr_accessible,如下所示

class MyModel < ActiveRecord::Base
  attr_accesssible :text
end

这将确保只能通过批量分配更新MyModel的text属性。