在学习了大约一个月的ruby之后,我决定转向Sinatra。我需要帮助来理解说明条件和路由的Sinatra片段。有人可以逐行清楚地解释发生了什么,以及这个block实际上是如何随机化路线的吗?set(:probability){|value|condition{rand0.1do"Youwon!"endget'/win_a_car'do"Sorry,youlost."end 最佳答案 整体行为将导致第一个路由在大约10%的时间内加载,第二个路由将在其余时间加载。第一条路线使用通过概率设置的条件。probabilitysetabo
这似乎工作正常:views/index.haml:%form{:method=>'POST':action=>'/'}%label{:for=>'name'}Name:%input{:type=>'text,:value=>@values[:name]||""}%input{:type=>'submit'}应用.rb:post'/'do@values=paramshaml:reviewendviews/review.rbHello#{params[:name]}!但是,当我尝试将我的帖子数据发送到不同URL上的同一View时,我收到错误消息,换句话说:应用.rb:post'/'do@v
响应请求时,是否可以先发送响应再继续处理?或者您需要运行后台进程吗?什么是最简单的解决方案?Heroku、Ruby1.9.3上的Sinatra应用。 最佳答案 您可以让另一个线程运行,例如:http://mark-watson.blogspot.com/2011/11/ruby-sinatra-web-apps-with-background.html 关于ruby-如何在后台运行Sinatra作业?,我们在StackOverflow上找到一个类似的问题: h
我有两种方法可以做到这一点。第一个是使用:locals=>{....},另一个是使用@var_name。我只是想知道哪个更好/更喜欢?我在任何地方都找不到这个问题的答案。谢谢 最佳答案 我没有经验,但可能您使用@var_name编写的代码较少,但是如果假设您有2个操作使用不同的对象呈现相同的View,假设一个使用foo,另一个使用bar,您可能希望使用本地人。deffoosfoos=Foo.allerb:something,locals:{list:foos}enddeffoosbars=Foo.allerb:something,l
当我通过HTTPS访问页面时,我需要测试页面上的某些元素的行为方式-我想知道如何使用HTTPS在本地测试这个sinatra应用程序。如果我的问题甚至没有意义,我深表歉意,但我想通过我的网络浏览器通过HTTPS连接到本地主机。 最佳答案 简短回答:您可以为本地开发创建一个自签名证书。Heroku在howtocreateaself-signedSSLcert上有一篇简短的文章.一旦您创建了证书和key,使用Thin就非常简单:SSLoptions:--sslEnablesSSL--ssl-key-filePATHPathtoprivat
我正在Sinatra中创建一个小应用程序,我想根据他们的邮政编码(他们会输入)、他们与其他用户之间的距离(通过邮政编码)确定我的用户所在的城市,以及可能是zipper的热图。我该怎么做?我试过geoipgem,但它似乎没有达到我想要的效果。我会使用Googlemap等外部服务吗(显然我需要它来制作热图)?感谢您的帮助。 最佳答案 GeoKitgem听起来很适合你想做的事情。它抽象出各种地理编码服务(Yahoo、Google等)的接口(interface),并提供用于距离计算的代码。您可以对zip进行地理编码以获取位置、访问有关该位置
我不知道这是一个ruby问题还是一个Sinatra问题,因为我对这两个问题都不熟悉。下面的代码不起作用,我明白为什么,因为第一个my_variable在它的block中是本地的。我只是不知道正确的语法。require'rubygems'require'sinatra'configuredomy_variable="world"endget'/'do"Hello"+my_variableendEDIT1-下面的工作,但我想我对配置block的正确目的感到困惑。require'rubygems'require'sinatra'my_variable="world"get'/'do"He
我很好奇这东西是如何工作的。在要求'sinatra'之后然后我可以在顶级范围内调用get()。深入源码后,我发现了这个get()结构moduleSinatraclass知道类但我唯一想不通的是它在模块Sinstra中,如何在不使用Sinatra::解析操作或其他东西的情况下调用get()? 最佳答案 它分散在几个地方,但是如果您查看lib/sinatra/main.rb,您可以在底部看到这一行:包含Sinatra::Delegator如果我们进入lib/sinatra/base.rb,我们会看到这段代码大约在1470左右。#Sina
我正在写一个Sinatra应用程序需要根据用户使用的是iPhone还是常规浏览器来呈现不同的布局。我可以使用Rack-Mobile-Detect检测浏览器类型但我不确定告诉Sinatra使用哪种布局的最佳方式。此外,我有一种感觉,我选择这样做的方式也可能会破坏页面缓存。是真的吗?示例代码:require'sinatra/base'require'haml'require'rack/mobile-detect'classOrca 最佳答案 这就是我最终做的:require'sinatra/base'require'haml'requi
我有一个在Ruby1.9.3上运行的非常简单的Sinatra应用程序,它使用ERB和Markdown模板。我已经将其剥离以证明问题所在。这是在MacOSXSnowLeopard上运行Sinatra1.3.2。对于Markdown,我使用的是rdiscount1.6.8。主要的Ruby文件包含get'/services'doerb:servicesendservices.erb文件中有以下内容£在Markdown文件中我只有一行£当我运行Sinatra应用程序并加载“服务”页面时,我在第二行出现异常Encoding::CompatibilityErrorat/servicesincomp