【问题标题】:LocalJumpError: no block given (yield) rails consoleLocalJumpError: no block given (yield) rails console
【发布时间】:2014-10-24 04:40:43
【问题描述】:

我需要在 Rails 控制台中尝试这个辅助方法,但我得到一个错误 对不起,我是新手

juan:~/workspace/sample_app$ rails c
Loading development environment (Rails 4.2.0.beta2)
2.1.1 :001 > helper.provide(:title,"Home")
 => nil 
2.1.1 :002 > yield :title
LocalJumpError: no block given (yield)

我想在 Rails 控制台中重现名为 provide 的视图辅助方法的行为

例子

 <% provide(:title, "Home") %>
<!DOCTYPE html>
<html>
  <head>
    <title><%= yield(:title) %> | Ruby on Rails Tutorial Sample App</title>
  </head>
  <body>
    <h1>Sample App</h1>
    <p>
      This is the home page for the
      <a href="http://www.railstutorial.org/">Ruby on Rails Tutorial</a>
      sample application.
    </p>
  </body>
</html>

【问题讨论】:

  • 我需要在 Rails 控制台中尝试这个辅助方法,你能解释一下为什么需要这样做吗?

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-4


【解决方案1】:

只有当你在一个被块调用的方法中时,你才能使用yield。在 rails 控制台中,您处于主环境中并且没有任何阻塞,这就是您收到该错误的原因。

您可以查看this answer 以了解yield 在视图中的工作原理。

最好的方法是在渲染时将调试器放在视图中,然后测试提供的功能。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-10-28
    • 1970-01-01
    • 1970-01-01
    • 2014-03-11
    • 2012-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多