【发布时间】:2013-04-15 12:34:02
【问题描述】:
如何解决此错误?我想干燥我的控制器,并且在每种方法中我对 params[] 执行完整性检查,只需确保所有参数都存在。
问题在于 lambda 的返回。正如它所定义的那样
def validate_input(parameters)
return proc {
if parameters.find_index { |i| i.nil? }
error_message = {'Error' => 'Please fix some params'}.to_json
render :json => error_message and return
end
}
end
然后,在我的控制器操作中,我执行以下操作:
def action
...
validate_input([my_sane_id, my_other_param]).call
...
end
并得到错误:意外返回。
【问题讨论】:
-
您是否知道意外返回在哪一行?我的直觉是你可能在这里不需要它:
render :json => error_message and return由于隐式返回。 -
但这正是我想要做的:验证后,只需从调用方法返回。嗯。想了一会儿 :) 我明白你在说什么。很快就会检查。
-
我只是觉得看到你使用了
proc- 我知道在某些版本的Ruby中proc和lambda是可以互换的,但是Proc和Lambda的行为不同返回时。 innig.net/software/ruby/closures-in-ruby我想是我想到的文章。
标签: ruby-on-rails controller return dry proc