我在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,请告诉我.
我一直在关注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) 我试图在网站上添加一个半透明的黑色覆盖层,除了透明的圆形区域.图像吼叫.
我尝试过不同的亲子关系和不透明度设置但没有成功.有没有办法处理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中削减漏洞.这就是为什么我原本无法找到问题的解决方案.