小编iel*_*anr的帖子

服务对象的验证和错误处理

我在Rails中创建了一个服务对象,作为我们的应用程序和API之间的接口.

我从http://blog.codeclimate.com/blog/2012/10/17/7-ways-to-decompose-fat-activerecord-models/得到了这个想法

这是一个小例子:

class PackagesService
  def self.get_package(package_id)
    raise ArgumentError.new("package_id can't be nil") if package_id.blank?
    package = API::get "/packages/#{package_id}"
    package = JSON.parse package,
                          :symbolize_names => true unless package.blank?

  end
end
Run Code Online (Sandbox Code Playgroud)

是否有任何良好的模式来处理验证和/或抛出Service对象的错误?

验证:

  • 我必须检查所有输入是否为错误类型.有没有办法轻松验证?也许铁路延伸?

对于错误:

  • 我可以捕获所有API错误,然后安全地返回一个零.但是使用服务对象的程序员可能不知道nil的含义.
  • 我可以捕获API错误并引发另一个错误,这意味着在所有函数中执行此操作需要付出额外的努力
  • 第三个选项是保持原样并让程序员处理来自API的所有错误.

如果您知道任何好的模式,或者您有更好的想法来连接API,请告诉我.

validation error-handling soa ruby-on-rails interface

10
推荐指数
1
解决办法
4094
查看次数

在onEnter中使用replaceState时,this.props.location.state为null

我一直在关注react-router 1.0.3的auth-flow示例:

var requireAuth = function(nextState, replaceState){
  if(!auth.loggedIn()){
    replaceState({ nextPathname: nextState.location.pathname }, '/login');
  }
}

export default (
  <Route component={App}>
    <Route path='/login' component={Login}/>
    <Route path='/' component={Messenger} onEnter={requireAuth}/>
  </Route>
);
Run Code Online (Sandbox Code Playgroud)

当有人未​​登录时,函数replaceState按预期执行,显示/ login页面,但状态:

{ nextPathname: nextState.location.pathname }

哪个应该在this.props.location.state中无处可寻.相反,this.props.location.state是未定义的.

这似乎与以下问题相同:https: //github.com/rackt/react-router/issues/2768

有人会知道为什么国家没有被设定?

编辑 我试过this.props.history.replaceState,似乎没有问题地传递状态.它只在onEnter挂钩时才起作用.

编辑2 经过实验和学习更多关于反应,我意识到我正在做反应的服务器端渲染.replaceState函数将在服务器中触发,并且Router.match函数(建议用于服务器端呈现)将触发:

    Router.match({ routes: routes.default, location: req.url }, function(err, redirectLocation, renderProps) {
        if (err) {
          res.status(500).send(err.message)
        } else if (redirectLocation) {
          res.status(302).redirect(redirectLocation.pathname + redirectLocation.search)
        } else if (renderProps) {
          var html = ReactDOM.renderToString(React.createElement(Router.RoutingContext, renderProps));
          var page = …
Run Code Online (Sandbox Code Playgroud)

react-router

8
推荐指数
1
解决办法
2419
查看次数

不透明半透明覆盖层,带透明圆圈

我试图在网站上添加一个半透明的黑色覆盖层,除了透明的圆形区域.图像吼叫.

在此输入图像描述

我尝试过不同的亲子关系和不透明度设置但没有成功.有没有办法处理CSS或JavaScript?

编辑:这是我正在处理的代码.黑色圆圈应该是透明的. https://jsfiddle.net/f47oto4o/

HTML:

<div>
  <p>
   This should be shown
  </p>
</div>
<div class="overlay">
   <div class="transparent-circle"></div>
</div>
Run Code Online (Sandbox Code Playgroud)

CSS:

p {
  margin-top: 200px;
  text-align: center;
}

.overlay {
  background: rgba(0,0,0,0.8);
  position: absolute;
  top: 0;
  bottom: 0;
  left: 0;
  right: 0;
}

.transparent-circle {
  position: absolute;
  top: 160px;
  left: 50%;
  height: 100px;
  width: 100px;
  background: rgba(0,0,0,1.0);
  z-index: 2;
  border-radius: 100%;
}
Run Code Online (Sandbox Code Playgroud)

编辑2:这应该标记为重复吗?问题在于不透明度和透明度,而不是在div中削减漏洞.这就是为什么我原本无法找到问题的解决方案.

html javascript css

1
推荐指数
1
解决办法
678
查看次数