Rails 4 has_many nested_attributes来替换所有

我想使用nested_attributes来替换所有旧的关联对象。 最好的方法是怎样做的? 如果我使用下面的代码,每次使用nested_attributes更新主对象时,都会创建关联的新对象。 accepts_nested_attributes_for :days 编辑 我在下面的before_validation回调中得到了它: def replace_days db_days = days.where(‘id IS NOT NULL’) all_days = days all_days -= db_days self.days = all_days end 问题在于我对子模型的独特validation。 Rails将进入数据库以validation唯一性。 由于在validation时我的替换不在数据库上,因此得到了validation错误。 不知道如何绕过这个,如果这是最好的方法。 我希望rails有一些本机function或参数可以帮助我完全按照自己的意愿行事。

Rails抛出“REXML :: ParseException没有有效的根”exception

我有一个JavaScript对象,并使用Douglas Crockford的JSON实用程序将其转换为JSON。 在发送后AJAX请求时,我得到: REXML :: ParseException没有有效的根 REXML::ParseException (The document “{\”name\”:\”asda\”,\”deadline\”:\”May 24, 2011\”}” does not have a valid root): 我无法继续此错误。

Rails validate_association与模型的错误消息

我使用模型中的validates_associated来使用其他模型的validation代码。 这个问题是validation失败的消息是“..无效”。 我想将模型validation失败的实际描述性错误冒出来! 我发现了这个问题: 与模型的错误消息相关的validation 这看起来像一个非常接近的解决方案: module ActiveRecord module Validations class AssociatedBubblingValidator value)) end end end end end module ClassMethods def validates_associated_bubbling(*attr_names) validates_with AssociatedBubblingValidator, _merge_attributes(attr_names) end end end end 但实际上它遇到了一个错误: undefined method `valid?’ for # 任何人都可以帮助完成这个几乎工作的工作!? 完整的错误跟踪是: undefined method `valid?’ for # Extracted source (around line #6): 4 5 6 7 8 9 def validate_each(record, […]

在运行bundle install时,在1.9兼容模式下使用jruby创建新的rails项目会挂起

有谁遇到过这个问题? 我能够在1.8兼容模式下创建项目。 这是我正在使用的 Mac OSX Lion JRuby 1.6.4 Java 1.6.0_31 rvm 1.8.1 我正在运行以下命令 JRUBY_OPTS=–1.9 rails new myapp 这将继续并创建应用程序所需的所有文件,然后挂起在语句中。 run bundle install 当我查看Activity Monitor时,java进程正在耗尽大部分cpu。

“respond_to do | format |”抛出UnknownFormat错误

我正在尝试使用ajax从控制器渲染一个js文件。 这个确切的代码以前总是工作,它甚至可以在其他方法中工作,但我突然开始收到此错误: ActionController::UnknownFormat in MoviesController#vote ActionController::UnknownFormat 电影控制器: def vote … respond_to do |format| #The error points to this line. format.js end end vote.js.erb: $(‘#votes’).html(“”); 链接: movies.html.erb: _votes.html.erb routes.rb中: post ‘movies/vote’ => ‘movies#vote’, as: ‘vote’ 为什么我突然收到此错误? 为什么它在不同的环境中工作而在这个环境中不工作? 使用Rails 4.0.10 更新:堆栈跟踪 应用跟踪: app/controllers/movies_controller.rb:394:in `vote’ 全部追踪: actionpack (4.0.10) lib/action_controller/metal/mime_responds.rb:372:in `retrieve_collector_from_mimes’ actionpack (4.0.10) lib/action_controller/metal/mime_responds.rb:189:in `respond_to’ app/controllers/movies_controller.rb:394:in `vote’ actionpack (4.0.10) […]

在随机位置的ruby中压缩2个数组

有没有一种简单的方法可以在随机位置压缩2个数组并保持原始顺序 ? 例如 a=[0,1,2,3,4,5,6,7,8,9,10] b=[“one”,”two”,”three”,”four”] 和随机数从0到5与rand(5) zipped = [0,”one”,1,2,3,”two”,4,”three”,5,6,7,8,”four”,9,10] 并且随机序列将是1,3,1,4作为将“b”的每个元素“压缩”到a的位置 我能做的最好的是 i=0 merged=a b.each do |x| rnd = rand(5) merged.insert(i+rnd,x) i=i+rnd end

Ruby:如何使用dump方法将数据输出到csv文件?

我尝试使用ruby标准csv lib将对象的arr转储到名为’a.csv’的csv.file中 http://ruby-doc.org/stdlib-1.9.3/libdoc/csv/rdoc/CSV.html#method-c-dump dump(ary_of_objs, io = “”, options = Hash.new) 但在这种方法中,我如何转储到文件中? 没有这样的例子存在和帮助。 我谷歌没有为我做的例子…… 此外,文档说… 您可以提供的下一个方法是名为csv_headers()的实例方法。 期望此方法返回文档的第二行(再次作为数组),用于为每列提供标题。 默认情况下,:: load将设置一个实例变量,如果字段标题以@字符开头或调用send()将标头作为方法名称并将字段值作为参数传递。 仅在Array的第一个对象上调用此方法。 任何人都知道如何将实例方法csv_headers()传递给此转储函数?

Ruby MetaProgramming中令人困惑的案例

我是Ruby MetaProgramming的初学者。 在irb中练习我的代码时,我遇到了这个问题。 class A; end a = A.new b = class < works for b.foo b.instance_eval { define_method :bar do; puts ‘bar’; end } # => WHY this one works for a.bar rather than b.bar 最后一段代码片段让我困惑。 感谢您的具体答案,但也许我没有清楚地解释我的困惑。 我真正想要理解的是为什么define_method在这些情况下表现得如此不同,这里: class A def foo1 p ‘foo1 from A’ end define_method :bar1 do p ‘bar1 from A’ […]

Heroku推送错误:rake资产上的“NameError:未初始化的常量Uglifier :: VERSION”:预编译

我在尝试推向生产时收到以下错误。 这是推送的结果: $ git push production master Counting objects: 124, done. Delta compression using up to 4 threads. Compressing objects: 100% (118/118), done. Writing objects: 100% (124/124), 19.73 KiB | 0 bytes/s, done. Total 124 (delta 66), reused 1 (delta 0) remote: Compressing source files… done. remote: Building source: remote: remote: —–> Ruby app detected […]

为什么Ruby的循环命令比true更慢?

Ruby有一个内置的loop命令,可以永久地执行它后面的块(或直到中断为止)。 但是,当它与function上相似while true ,它会明显变慢: require “benchmark/ips” NUMBER = 100_000_000 def fast index = 0 while true break if index > NUMBER index += 1 end end def slow index = 0 loop do break if index > NUMBER index += 1 end end Benchmark.ips do |x| x.report(“While Loop”) { fast } x.report(“Kernel loop”) { slow […]