首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >rails around_action如何使用return语句

rails around_action如何使用return语句
EN

Stack Overflow用户
提问于 2020-10-24 04:55:49
回答 1查看 58关注 0票数 0

我是ruby和RoR世界的新手,最近我学到了块。我已经读取了代码块内部的return实际上是从调用它的最上面的函数返回的

例如

代码语言:javascript
运行
复制
def test 
    value = yield
    puts value

end

# prints "return inside block"
test do
      "return inside block"
end

# prints nothing
test do
      return "return inside block"
end

那么,如果这就是块和“返回”在ruby中的工作方式,为什么around_action的行为不一样呢?

例如

代码语言:javascript
运行
复制
class TestController < ApplicationController
    around_action :aroundy
    def test
        render json: {amit:"hello"} 
        puts "hello"
        return
    end
    
    # prints after even though the action "test" calls return
    def aroundy
        puts "before"
        yield  
        puts "after"
    end
end

如果我在操作内部调用return,那么代码在that之后如何继续运行呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-24 05:21:32

这两种情况之间有一个很大的区别:您的操作test是一个方法,而不是一个块。仅此一点就足以抛出所有期望,即return应该以与在块中相同的方式工作。

此外,它的调用方式并不像您的第一个代码片段中那样简单。Herearound_action如何在rails中实现,例如:

代码语言:javascript
运行
复制
define_method "#{callback}_action" do |*names, &blk|
  _insert_callbacks(names, blk) do |name, options|
    set_callback(:process_action, callback, name, options)
  end
end
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64507189

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档