我无法更新多级嵌套表单中的数据.我使用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级深度.
有什么想法吗?
我有一个名为的属性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) 我有一个rails应用程序,它有一个在iframe中呈现的表单,并且我想从iframe中创建动作redirect_to并重新呈现整个页面而不是iframe.
我很好奇有什么想法可以实现这一目标.
我为产品相关的控制器创建了一个命名空间...
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)
我需要这两个配合工作的其他配置吗?
返回所有嵌入文档的最有效方法是什么?
说一个用户嵌入了很多地址......在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) 好奇BSON::ObjectId.id.data数组代表什么?
例如 [77, 145, 20, 13, 225, 96, 124, 5, 31, 0, 0, 1]
我有一个定义 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 构造函数,以断言它已被调用
我尝试了几种不同的方法,但未能得到我想要的结果。我是笑话嘲笑库的新手
所以我试图在迁移脚本中迁移一些数据,但数据似乎没有保存.但是,如果我复制代码并直接在控制台中运行它,它会保存.任何人都可以帮我找出原因吗?
这是我的迁移脚本中的代码.我正在将我的头像数据从自己的表格移动到我的个人资料表中.
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) javascript ×2
mongodb ×2
activerecord ×1
attributes ×1
bson ×1
console ×1
ecmascript-6 ×1
iframe ×1
jestjs ×1
mocking ×1
mongoid ×1
nested-forms ×1
ruby ×1