Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Ruby on Rails模型创建字符串未转换为整数_Ruby On Rails_Model - Fatal编程技术网

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

Ruby on rails Ruby on Rails模型创建字符串未转换为整数,ruby-on-rails,model,Ruby On Rails,Model,这是我的密码: release 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(condition

这是我的密码: release 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
发布\u 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"}
请提前帮助并感谢您。

找到原因。 在我的model release.rb中,我定义了“attr\u accessible:id,:name,:code,:as=>:tmp\u use”。然后它只接受id、名称和代码。在我添加了:base\u release\u id之后,它就可以工作了

不确定如何:as=>:tmp_使用work。我认为默认情况下所有变量都可以访问。在某些地方,我使用 Release.new(“id”=>row[:id],“name”=>row[:name],“code”=>row[:code],:as=>:tmp\u use) 有些地方我不想这样做,我希望所有列都可以访问

不知道怎么做


无论如何,谢谢你,伊万。

你在使用rails 4+
params.require(:release.permit(release.fields.keys)
实际上,我的实例运行在rails 3.0.9上,但当我在控制台中键入rails-v时,它给出了4.0.2。ruby 1.9.3p484(2013-11-22修订版43786)[x86_64-linux]那么
bundle exec rails-v
可能是rvm/bundler问题。尝试
Release.new(params.require(:Release.fields.keys)
而不是
Release.new(params[:Release])
找到原因。在我的模型Release.rb中,i'v定义了“attr\u accessible:id,:name,:code,:as=>:tmp\u use”。然后它只接受id、name和code。在我添加了:base\u release\u id之后,它就可以工作了。感谢您的帮助。
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