Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/57.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 Rails:构建方法打破循环_Ruby On Rails_Insert_Has Many - Fatal编程技术网

Ruby on rails Rails:构建方法打破循环

Ruby on rails Rails:构建方法打破循环,ruby-on-rails,insert,has-many,Ruby On Rails,Insert,Has Many,我尝试添加多个对象,如下所示: class Person < ActiveRecord::Base has_many :interests ... def add_interests(interest_hashes) interest_hashes.each do |interest| Rails.logger.debug "person.apply_interests: interest: #{interest.inspect}" inter

我尝试添加多个对象,如下所示:

class Person < ActiveRecord::Base
  has_many :interests
  ...

  def add_interests(interest_hashes)
    interest_hashes.each do |interest|
      Rails.logger.debug "person.apply_interests: interest: #{interest.inspect}"
      interests.build(:name => interest.name, :category => interest.category)
    end
    save!
  end
  ...
end

在调用感兴趣的name和category时,您应该得到一个NoMethodError,因为哈希是使用[]方法访问的。替换

interest.name


或者使用,这可能更可取。

函数的参数称为interests\u hash,您使用的是实例变量而不是参数,您可以像数组一样迭代,它包含。。。mmm对象?请您澄清一下散列包含哪些内容?很抱歉造成混淆。编辑和重命名内容时出错。将兴趣散列重命名为兴趣散列,其中包含一个散列数组。这并不是导致循环中断的原因,但是原始代码有点不同。我猜,当调用感兴趣的名称时,您会得到一个命名错误,但由于某种原因,它不会显示给您的用户。请看下面我的答案。如何回答?你给散列类打过补丁吗?谢谢,这就是问题所在。我试着改变它,但一开始什么都没有改变,直到我在if条件中看到了相同的错误,而这个错误在我的问题xd中没有包括,只是为了让混乱彻底:我可以通过这种方式访问OmniAuth::AuthHash oauth.uid。这就是为什么我总的来说认为哈希是可能的。这是因为它继承了很多感谢,每5分钟学习一次新东西。如果可以的话,我会投票支持你的评论。
interest.name
interest["name"]