小编Avd*_*vdi的帖子

如何通过Rails 3.2质量分配提交多个新项目

我有一个非常标准的用例.我有一个父对象和一个子对象列表.我希望有一个表格形式,我可以一次编辑所有的孩子,作为表中的行.我还希望能够插入一个或多个行,并在提交时将它们创建为新记录.

当我使用a fields_for为has-many相关的嵌套记录呈现一系列子表单时,rails会生成字段名称,例如parent[children_attributes][0][fieldname],parent[children_attributes][1][fieldname]依此类推.

这会导致Rack解析一个看起来像的params哈希:

{ "parent" => { 
    "children" => {
      "0" => { ... },
      "1" => { ... } } }
Run Code Online (Sandbox Code Playgroud)

传递一个新的(非持久化)对象时,同样fields_for会生成一个如下所示的字段名称:

parent[children_attributes][][fieldname]
Run Code Online (Sandbox Code Playgroud)

注意[]它没有索引.

不能以相同的形式发布包含的字段[0],[1]等等.因为机架迷糊和加薪

TypeError: expected Array (got Rack::Utils::KeySpaceConstrainedParams)
Run Code Online (Sandbox Code Playgroud)

"OK",我想."我只是确保所有字段都使用[]表单而不是[index]表单.但我无法弄清楚如何说服fields_for这样做.即使我给它一个明确的字段名称前缀和对象:

fields_for 'parent[children_attributes][]', child do |f| ...
Run Code Online (Sandbox Code Playgroud)

只要child持久化,它就会自动修改字段名,使它们成为例如parent[children_attributes][0][fieldname],同时为新记录保留字段名parent[children_attributes][][fieldname].再一次,Rack barfs.

我不知所措.我如何使用标准的Rails助手fields_for来提交多条记录以及现有记录,将它们解析为params中的数组,并将所有缺少ID的记录创建为DB中的新记录?我不幸运,我只需手动生成所有字段名称?

ruby-on-rails ruby-on-rails-3

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

为什么模拟课程这么糟糕?

我最近和一位同事讨论了嘲笑问题.他说,嘲弄课程非常糟糕,不应该在少数情况下完成.

他说只有界面应该被嘲笑,否则就是架构错误.

我想知道为什么这句话(我完全信任他)是如此正确?我不知道,并且想要被说服.

我是否想念嘲笑(是的,我读过Martin Fowler的文章)

testing unit-testing mocking

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

如何通过Pharo Finder查找示例?

在深入了解Pharo时,我印象最深刻的事情之一就是Finder可以通过示例找到它.我以前只在像Haskell这样的语言中看到过这种情况,在那里可以确定函数没有副作用.Pharo如何以安全,高效和无副作用的方式实现这一目标?

smalltalk pharo

14
推荐指数
1
解决办法
944
查看次数

如何为系统测试禁用 Rails 测试并行化*仅*?

我发现默认的测试并行化使得 chromedriver 测试非常不可靠。但我想保持其他测试并行。

我试过这个application_system_test_case.rb

class ApplicationSystemTestCase < ActionDispatch::SystemTestCase
  parallelize(workers: 1)
  # ...
end
Run Code Online (Sandbox Code Playgroud)

...但它似乎没有覆盖默认值。

我目前正在使用:

PARALLEL_WORKERS=1 rails test:system
Run Code Online (Sandbox Code Playgroud)

...但我正在寻找一种方法将其硬编码到项目中,这样其他人就不必“只知道”总是为系统测试设置该环境变量。

ruby-on-rails

11
推荐指数
1
解决办法
279
查看次数

如何可靠地发现Ruby可执行文件的完整路径?

我想写一个脚本,打包成一个gem,它将修改它的参数,然后exec用修改后的参数修改一个新的ruby进程.换句话说,类似于shell脚本,它修改了它的参数,然后执行了exec $SHELL $*.为了做到这一点,我需要一种健壮的方法来发现正在执行当前脚本的ruby可执行文件的路径.我还需要获取传递给当前进程的完整参数 - Ruby参数和脚本参数.

ruby scripting

8
推荐指数
2
解决办法
2472
查看次数

术语"真实"的面向对象是什么意思

我已经听过很多关于Ruby的信息,甚至Javascript可能是"真正的"面向对象语言,而C++和C#则是面向类(或基于模板)的语言.真正的OO是什么意思,这对于类/模板方法有什么好处?

c# ruby oop

8
推荐指数
1
解决办法
3681
查看次数

Ruby 1.8的Shellwords.shellescape实现

虽然1.8.7的构建我似乎有一个backported版本Shellwords::shellescape,但我知道该方法是一个1.9功能,并且在早期版本的1.8中肯定不支持.有没有人知道我能找到哪里,无论是Gem形式还是仅作为一个片段,一个强大的独立实现Bourne-shell命令逃避Ruby?

ruby bash shell escaping sh

5
推荐指数
2
解决办法
4514
查看次数