Ruby on Rails模型创建字符串未转换为整数

时间:2014-03-06 08:42:19

标签: ruby-on-rails model

这是我的代码: 发行版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

请提前帮助并表示感谢。

1 个答案:

答案 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) 有些地方我不想这样做,我希望所有列都可以访问。

不确定如何。

无论如何,谢谢你。