这是我的代码: 发行版db中的base_release_id列是整数类型
form.html.haml
= form_for @release do |f|
= f.label :name
%br
= f.text_field :name
....
= f.label :base_release_id
%br
= f.select :base_release_id, options_from_collection_for_select(conditionsPlusBlankOrderBy(Release),"id","name",@release.base_release_id)
= f.submit
releases_controller.rb
def create
ap params
@release = Release.new(params[:release])
ap @release
...
end
我打算创建一个新版本,包括它的名称,基本版本ID等。 我正在使用2“ap”来跟踪释放对象。奇怪的事发生了。请参阅下面的日志:
{
"utf8" => "â",
"authenticity_token" => "8HdDlC3jJxYvq+8tUh/cut5ibHxjIF6L2CzAFORlNBg=",
"release" => {
"name" => "e",
"code" => "e",
"base_release_id" => "2"
},
"commit" => "Create Release",
"action" => "create",
"controller" => "releases"
}
#<Release:0x000000190f06b8> {
:id => nil,
:name => "e",
:code => "e",
:base_release_id => nil,
}
Processing by ReleasesController#create as HTML
Parameters: {"utf8"=>"â", "authenticity_token"=>"8HdDlC3jJxYvq+8tUh/cut5ibHxjIF6L2CzAFORlNBg=", "release"=>{"name"=>"e", "code"=>"e", "base_release_id"=>"2"}, "commit"=>"Create Release"}
不确定为什么base_release_id丢失,名称和代码正常工作。 我有类似的代码在其他页面中工作,在这种情况下参数字符串值不解析为模型整数?
如果我添加数据类型convertion如下所示:
def create
ap params
@release = Release.new(params[:release])
@release.base_release_id = params[:release][:base_release_id].to_i if params[:release][:base_release_id]
ap @release
...
end
请提前帮助并表示感谢。
答案 0 :(得分:0)
找到原因。 在我的模型release.rb中,我定义了“attr_accessible:id,:name,:code,:as =&gt;:tmp_use”。然后它只接受id,name和code。在我添加:base_release_id之后,它可以工作。
不确定如何:as =&gt; :tmp_use工作。我想默认所有变量都可以访问。在某些地方,我正在使用 Release.new(“id”=&gt; row [:id],“name”=&gt; row [:name],“code”=&gt; row [:code],:as =&gt;:tmp_use) 有些地方我不想这样做,我希望所有列都可以访问。
不确定如何。
无论如何,谢谢你。