【发布时间】:2011-06-02 15:39:10
【问题描述】:
我有一个设置模型属性的表单,但是,我想通过代码设置一个属性。也就是说,我希望用户设置一些属性,但我希望程序设置其他属性。
有什么办法吗?
例子:
如果我有一个包含“文本”列和“用户”列的表格,我希望用户输入文本,但我希望程序设置“用户”列。我将如何做到这一点?
【问题讨论】:
标签: ruby-on-rails ruby model-view-controller forms models
我有一个设置模型属性的表单,但是,我想通过代码设置一个属性。也就是说,我希望用户设置一些属性,但我希望程序设置其他属性。
有什么办法吗?
例子:
如果我有一个包含“文本”列和“用户”列的表格,我希望用户输入文本,但我希望程序设置“用户”列。我将如何做到这一点?
【问题讨论】:
标签: ruby-on-rails ruby model-view-controller forms models
如果你想确保只有 text 属性可以被用户更新,你可能想使用 attr_accessible 如下
类 MyModel这将确保只有 MyModel 的文本属性可以通过批量赋值进行更新。
【讨论】:
当然。你可以这样做:
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
在您的表单中,您只需省略不希望人工编辑的字段。您还必须更改更新功能。
【讨论】: