Tag: 产量

find_in_batches“NO BLOCK GIVEN(YIELD)”

我有一个方法,我接受一个模型和result_size。 我尝试在这种方法中做的第一件事是: array = model.logs.find_in_batches(:batch_size => result_size) 但这不起作用; 相反,它返回“No Block Given(Yield)”。 我想我只是不熟悉块和收益率。 如果有人能帮助我理解/解决这个问题,我将不胜感激! 提前致谢!

Ruby on Rails传递对yield(模板)的引用

简而言之:我的每个标签都有自己的forms,因此我决定制作一个单独的布局,只是将表单本身作为布局的可变内容。 但我需要让form_for在布局中,而不是在每个窗体中都有,因为我在布局中有一些其他常见的窗体元素。 那么如何将表单生成器的引用f传递给模板呢? 布局代码: 可能吗 ? PS找到这个: 干掉一个帮助器:包装form_for并访问本地表单变量 (@ rubish的答案),但似乎不起作用,f仍然未定义视图。

Ruby块的问题

代码有什么问题? def call_block(n) if n==1 return 0 elsif n== 2 return 1 else yield return call_block(n-1) + call_block(n-2) end end puts call_block(10) {puts “Take this”} 我正在尝试使用yield来打印除了第十个斐波纳契数之外。 我收到错误:在`call_block’中:没有给出块(LocalJumpError) 即使以下代码抛出错误: def call_block(n) if n==1 yield return 0 elsif n== 2 yield return 1 else yield return call_block(n-1) + call_block(n-2) end end puts call_block(10) {puts “Take this”}

使用多个产量来插入内容

我正在尝试使用yield在我的页面上插入内容,但每次操作都会从页面中删除整个内容。 我有一个主要yield ,工作正常: 但是在一个页面上显示的新内容中,我有另一个yield : 当用户单击呈现的菜单时,应在该菜单下方显示新内容。 管理员/ _menu.html.erb “admins”, :action => “test” %> 控制器: class AdminsController < ApplicationController def index end def test @users = User.paginate(page: params[:page]) end end test.html.erb All users … 当我从菜单中单击“用户”选项时,页面刷新,菜单消失,“body”内没有显示任何内容。 我希望内容显示在菜单下方。 如何使用第二次产量并完成此function? 我希望这个问题不会令人困惑。 如果问题令人困惑,请在评论中写下我,我会立即编辑。 谢谢 :)

Rails 3 – yield return或callback不会在视图中调用

我正在将一个网站从Rails 2(最新)迁移到Rails 3(beta2)。 使用Ruby 1.9.1p378和Ruby 1.9.2dev进行测试(2010-04-05 trunk 27225) 陷入困境,我不知道哪一部分会运作良好。 怀疑yield是问题,但不确切知道。 在我的布局文件中,我经常使用以下技术: app/views/layouts/application.html.erb : 例如,局部看起来像: app/views/shared/_sidebar.html.erb : Default sidebar Content. Bla Bla 现在是关键部分的时候了! 在任何视图中,我想创建一个content_for块(可选)。 这可能包含一些HTML等示例。 如果设置了此块,则应在application.html.erb呈现内部的pice HTML。 如果没有,Rails应该在右侧的shared/_sidebar.html.erb上呈现Partial。 app/views/books/index.html.erb : You have to read REWORK, a book from 37signals! 所以你有了主意。 希望。 这种技术在任何Rails 2.x应用程序中都运行良好。 现在,在Rails 3 (beta2)中,只有yield部分正在工作。 || render(‘shared/sidebar’) or侧面不会通过铁轨或ruby处理。 感谢您的投入和时间!

词语产量的含义

目前我正在阅读David A. Black的“The Well-Grounded Rubyist”,我坚持10.9章(枚举器和可枚举的下一个维度)。 我的问题是关于yield方法。 Ruby上下文中yield这个词的含义是什么? 我的母语是俄语,谷歌翻译给我看了一堆翻译变体,让我感到困惑。 其中有一些: 给予 , 带来 , 投降 ( 放弃 ), 生产 , 同意 , 遵守和许多其他人。 UPD:请注意这个事实,我试图理解Enumerator :: Yielder#yield方法的含义,但不是yield关键字本身。 UPD_2:我发现了有关枚举器的有趣文章:“ Ruby中的懒惰枚举器 ”。

Ruby相当于C#的’yield’关键字,或创建序列而不预先分配内存

在C#中,你可以这样做: public IEnumerable GetItems() { for (int i=0; i<10000000; i++) { yield return i; } } 这将返回一个包含1000万个整数的可枚举序列,而无需在该长度的内存中分配集合。 有没有办法在Ruby中做同等的事情? 我想要处理的具体示例是将矩形数组展平为要枚举的值序列。 返回值不必是Array或Set ,而是某种只能按顺序迭代/枚举的序列,而不是索引。 因此,不需要在存储器中同时分配整个序列。 在.NET中,这是IEnumerable和IEnumerable 。 在Ruby世界中使用的术语的任何澄清都会有所帮助,因为我更熟悉.NET术语。 编辑 也许我原来的问题还不够清楚 – 我认为在C#和Ruby中, yield含义差别很大,这就引起了混乱。 我不想要一个需要我的方法来使用块的解决方案。 我想要一个具有实际返回值的解决方案。 返回值允许方便地处理序列(过滤,投影,连接,压缩等)。 这是一个如何使用get_items的简单示例: things = obj.get_items.select { |i| !i.thing.nil? }.map { |i| i.thing } 在C#中,任何返回使用yield return返回的IEnumerable方法都会导致编译器在幕后生成满足此行为的有限状态机。 我怀疑使用Ruby的延续可以实现类似的东西,但我还没有看到一个例子,我自己也不清楚如何做到这一点。 确实有可能使用Enumerable来实现这一目标。 一个简单的解决方案是给我们一个Array (包括模块Enumerable ),但我不想在内存中创建一个包含N个项目的中间集合,因为它可以只是懒得提供它们并且完全避免任何内存峰值。 如果这仍然没有意义,那么请考虑上面的代码示例。 get_items返回一个枚举,在该枚举上调用select 。 […]

Ruby on rails:在布局中的特定位置生成特定视图

如果我有一个标记,那么我的所有视图都会在布局中的相同位置呈现。 我可以为不同的视图使用不同的标签吗? 我是怎么做到的? 谢谢

在块/ lambda中产生麻烦

我有以下Ruby代码: # func1 generates a sequence of items derived from x # func2 does something with the items generated by func1 def test(x, func1, func2) func1.call(x) do | y | func2.call(y) end end func1 = lambda do | x | for i in 1 .. 5 yield x * i end end func2 = lambda […]