小编bre*_*ter的帖子

嵌套表单和update_attributes

我无法更新多级嵌套表单中的数据.我使用partials来包含创建和更新视图的所有字段,并且我没有创建问题.只有更新.

基本上结构(简化)是:

user has_one profile
profile has_many addresses

form_for @user do |u|
  u.fields_for :profile do |p|
    p.fields_for :addresses do |a|
Run Code Online (Sandbox Code Playgroud)

就像我说的,创建用户,配置文件和地址工作正常.直到我试图更新我发现问题.我没有收到错误,它实际上显示它已成功更新.它实际上正确地更新了用户和配置文件字段,而不是地址字段.

这里是堆栈跟踪更新的参数.(再次,总结和格式化)

Parameters: {"controller"=>"profiles", "action"=>"update", "_method"=>"put", "id"=>"1", 
  "user"=>{"login" => "username",
    "profile_attributes"=>{"first_name"=>"Admin",
      "addresses_attributes"=>{
        "0"=>{"address"=>"123 Address Ave.", "city"=>"Cityville", "state"=>"CA"}
      }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

我能找到的所有文档只显示1个嵌套表单,所以我不确定我是否正确使用update_attributes超过1级深度.

有什么想法吗?

ruby-on-rails nested-forms

4
推荐指数
1
解决办法
3877
查看次数

根据虚拟属性设置activerecord属性

我有一个名为的属性dimensions,我想根据我的设置width,height以及depth属性.

例如,我想这样做ShippingProfile.find(1).width = 4,并将它保存为{:width => 4,:height => 0,:depth => 0}.

这可能吗?

class ShippingProfile < ActiveRecord::Base
  after_initialize :set_default_dimensions

  serialize :dimensions, Hash

  attr_accessor :width, :height, :depth
  attr_accessible :width, :height, :depth, :dimensions

  private

    def set_default_dimensions
      self.dimensions ||= {:width => 0, :height => 0, :depth => 0}
    end  
end
Run Code Online (Sandbox Code Playgroud)

activerecord attributes ruby-on-rails

3
推荐指数
1
解决办法
2283
查看次数

redirect_to out of iframe

我有一个rails应用程序,它有一个在iframe中呈现的表单,并且我想从iframe中创建动作redirect_to并重新呈现整个页面而不是iframe.

我很好奇有什么想法可以实现这一目标.

javascript iframe ruby-on-rails

2
推荐指数
1
解决办法
1144
查看次数

子文件夹中的命名空间控制器+模型

我为产品相关的控制器创建了一个命名空间...

  scope :module => :products do
    resources :products
    resources :product_images
  end
Run Code Online (Sandbox Code Playgroud)

这很棒.

独立地,我添加了一个自动加载路径,所以我可以将模型放入子目录.

config.autoload_paths += Dir["#{config.root}/app/models/**/"]
Run Code Online (Sandbox Code Playgroud)

这也很有效.

当我尝试同时使用它们时,我收到错误.

Expected /app/models/products/product.rb to define Products::Product
Run Code Online (Sandbox Code Playgroud)

即使我不应该命名我的模型,为了排除故障,如果我命名我的模型...错误变成......

Expected /app/models/products/product.rb to define Product
Run Code Online (Sandbox Code Playgroud)

我需要这两个配合工作的其他配置吗?

ruby-on-rails

2
推荐指数
1
解决办法
1394
查看次数

mongoid:返回所有嵌入的文档

返回所有嵌入文档的最有效方法是什么?

说一个用户嵌入了很多地址......在ActiveRecord中,我可以用Address.count来计算它们.这样做的嵌入式文档/ mongo版本是什么?

它的2级或更高级别的时候怎么样?产品>按>变化...我怎样才能得到所有作者所有书籍中所有章节的统计数据?如果比如说Ruby,它会怎么样?

Product has_many Pressings
Pressing has_many Variations

Product
  def self.pressings
    all.collect { |p| p.pressings }.flatten
  end
  def self.variations
    self.pressings.collect { |p| p.variations }.flatten
  end
end
Run Code Online (Sandbox Code Playgroud)

ruby mongodb mongoid

2
推荐指数
1
解决办法
1287
查看次数

mongo bson objectid

好奇BSON::ObjectId.id.data数组代表什么?

例如 [77, 145, 20, 13, 225, 96, 124, 5, 31, 0, 0, 1]

mongodb bson

2
推荐指数
1
解决办法
1388
查看次数

如何使用 jest 模拟从方法内部启动的构造函数

我有一个定义 2 个类的脚本,其中 1 个类从另一个类的构造函数中实例化。我如何模拟嵌套构造函数,以便我可以测试父构造函数?

export default class Foo {
  // i want to test this constructor...
  constructor() {
    new Bar
  }
}

export class Bar {
  // but mock this constructor
  constructor() {}
}
Run Code Online (Sandbox Code Playgroud)

另外,我试图监视 Bar 构造函数,以断言它已被调用

我尝试了几种不同的方法,但未能得到我想要的结果。我是笑话嘲笑库的新手

javascript mocking ecmascript-6 jestjs

2
推荐指数
1
解决办法
1万
查看次数

rails迁移脚本VS控制台

所以我试图在迁移脚本中迁移一些数据,但数据似乎没有保存.但是,如果我复制代码并直接在控制台中运行它,它会保存.任何人都可以帮我找出原因吗?

这是我的迁移脚本中的代码.我正在将我的头像数据从自己的表格移动到我的个人资料表中.

  def self.up
    add_column :users,    :featured,            :boolean, :default => false
    add_column :profiles, :avatar_file_name,    :string
    add_column :profiles, :avatar_content_type, :string
    add_column :profiles, :avatar_file_size,    :integer
    add_column :profiles, :avatar_updated_at,   :datetime

    Avatar.all.each do |a|
      user = User.find(a.user_id)
      user.profile.avatar_file_name = a.avatar_file_name
      user.profile.avatar_content_type = a.avatar_content_type
      user.profile.avatar_file_size = a.avatar_file_size
      user.profile.avatar_updated_at = a.updated_at
      if a.featured == true
        user.featured = true
      end
      user.save
    end

    # drop_table :avatars
  end
Run Code Online (Sandbox Code Playgroud)

console data-migration ruby-on-rails

0
推荐指数
1
解决办法
543
查看次数