草庐IT

ruby-on-rails - 在不更改 URL 的情况下呈现另一个 Action?

我的Rails3Controller中有这段代码:defindexnow=Time.now.utc.strftime("%m%d")redirect_to:action=>"show",:id=>nowenddefshowbegin@date=Time.parse("12#{params[:id]}")dbdate=params[:id]rescueArgumentError@date=Time.now.utcdbdate=@date.strftime("%m%d")end@date=@date.strftime("%B%d")@events=Event.events_for_date

ruby - 在不创建 block 作用域的情况下运行 eval

我正在尝试理解Ruby中的eval和绑定(bind)上下文。在irb中考虑以下内容irb(main):001:0>eval"a=42"=>42irb(main):002:0>aNameError:undefinedlocalvariableormethod`a'formain:Objectfrom(irb):2from/Users/niels/.rbenv/versions/2.1.3/bin/irb:11:in`'irb(main):003:0>为什么a没有定义?如果我在评估之前声明a,则值42会分配给a。在我看来,某种block作用域适用于局部变量在eval上下文中可用的情况,但声

ruby - 在不更改其上下文的情况下使方法在 block 中可用?

我想创建一个执行以下操作的类:它的实例接受一个block。在实例初始化期间,它执行某些操作,然后调用block,然后执行更多操作。在block内,该类的另一个方法应该可用。这是我希望它的工作方式:Foo.newdoputs"Hell,Icangetyouatoeby3o'clockthisafternoon..."barputs"...withnailpolish."end我已经通过以下类(class)成功实现了它:classFoodefinitialize(&block)puts"Thisrepresentsabeginningaction"instance_eval&blockpu

ruby - 在不破坏 anchor 和别名的情况下读写 YAML 文件

这个问题之前有人问过:ReadandwriteYAMLfileswithoutdestroyinganchorsandaliases?我想知道如何解决这个有很多anchor和别名的问题?谢谢 最佳答案 这里的问题是anchorsandaliases在Yaml中是序列化细节,因此在解析后不属于数据的一部分,因此在将数据写回Yaml时不知道原始anchor名称。为了在往返时保留anchor名称,您需要在解析时将它们存储在某个地方,以便稍后在序列化时可用。在Ruby中,任何对象都可以有与之关联的实例变量,因此实现这一点的一种简单方法是将a

ruby - 在不评估内联 Ruby 脚本的情况下将 Haml 转换为 HTML

我需要将Haml脚本转换为其等效的HTML脚本。由于我在外部执行此操作并且没有运行主rails项目,因此Haml文件中存在的Ruby脚本会抛出异常(这是显而易见的)。现在,我不介意输出HTML中是否存在Ruby脚本(在那种情况下它看起来像一个erb,这对我来说没问题)。我只关心一些html标签。似乎我可以覆盖Haml::Engine#render(scope=Object.new,locals={},&block)方法那么它可能会有所帮助。但没有完全理解。有什么想法吗?更新仅转换-foo和=fooblock进入Erb和(分别)不会完全起作用,因为插值会在那里,比如:%div{:clas

ruby - RSpec:在不访问数据库的情况下测试 AR 查找器

我将如何使用RSpec测试以下查找器?defself.find_by_mbid(mbid)super(mbid.downcase())end我认为唯一可行的方法是事先将其存储在数据库中,我希望避免这种情况,因为这是一个单元测试。我在这里看不到如何返回模拟,因为RSpec几乎无法访问super。有更好的方法吗?还是单元测试对于这类事情来说太低级了? 最佳答案 如果您愿意更改实现,您可以模拟它,但我建议使用数据库指定查找器。 关于ruby-RSpec:在不访问数据库的情况下测试AR查找器,我

ruby-on-rails - 为什么在不传递 :id param work (in rails)? 的情况下重定向到 #show 操作

我有一个关于Rails的简单问题。我遵循了一个教程(来自CrashLearner)。在该教程中,我们有一个简单的资源message,它生成常规的后续路线(摘自rakeroutes)PrefixVerbURIPatternController#ActionmessagesGET/messages(.:format)messages#indexPOST/messages(.:format)messages#createnew_messageGET/messages/new(.:format)messages#newedit_messageGET/messages/:id/edit(.:fo

ruby-on-rails - 在不实例化类的情况下调用ruby方法

如果我像这样在Rails事件模型方法上调用一个方法:classFoo我会取回第一个事件记录。我不必实例化类。但是如果我创建自己的类并调用一个方法,我会得到一个异常:classPerson我怎样才能解决这个问题? 最佳答案 有几种方法。最重要的两个是:实例方法和类实例方法。Foo.first是一个类实例方法。它适用于类实例(在本例中为Foo)。如果它在类中存储了一些数据,那么该数据将在您的程序中全局共享(因为只有一个类名为Foo(或::Foo,确切地说))。但是你的greeting方法是一个实例方法,它需要对象实例。如果您的问候方法将

ruby-on-rails - 在不清除标记的行为上作为可标记的 gem 的奇怪行为

我有一个名为Recipe的模型,它使用acts-as-taggable-ongem为食谱添加标签。奇怪的行为是当我通过Controller编辑和更新配方时,配方标签被添加而不是更新为正确的标签。有一个类似的Githubissue被举报,但没有任何人回复。我的acts-as-taggable-ongem版本是3.2.6。例如,我的食谱有三个标签:fruit、fruit和vegetables。fruit标签不相关,所以我在我的f.tag_list输入字段中删除了这两个fruit标签,只包含vegetables.ProcessingbyUsers::RecipesController#upd

ruby - 在不丢失 Ruby 中的引号或注释的情况下加载和保存 YAML 文件

我需要在Ruby中以编程方式编辑YAML文件,不幸的是我还需要保留引号字符。能够保留评论也是一种奖励。也就是说如果我有一个文件:---foo:'bar'或---foo:"bar"我的脚本不得将其写回:---foo:bar如前所述,理想情况下我也需要保留评论。如果不继续将整个文件视为文本流,是否有任何方便的方法来解决其中一个或两个问题? 最佳答案 在撰写本文时,这似乎无法在Ruby中实现,除非您准备编写自己的YAML解析器。我研究了其他语言,包括Perl和Python,发现有一个名为Ruamel的Python库可以做到这一点——或者更