我有一个sinatra应用程序,我计划在飞行中制作一个油炸的网址.我有一个看起来像这样的正则表达式的函数,但它不会将'空格'转换为'破折号',''转换为' - '.
def self.make_slug(title)
title.downcase.gsub(/ /, '-').gsub(/[^a-z0-9_]/, '').squeeze('-')
end
Run Code Online (Sandbox Code Playgroud)
提前致谢!
更新
现在我也试图将åä改为a和ö到o,我的代码看起来像这样但不起作用,任何想法?
gsub(/[åä]/, 'a')
gsub(/[ö]/, 'o')
Run Code Online (Sandbox Code Playgroud) 我有一个简单的表格,其中有一个列表:
<form method ="post" action ="">
<select>Select subject
<option value="1">Maths</option>
<option value="2">Science</option>
</select>
<input type="submit" name="Submit" />
Run Code Online (Sandbox Code Playgroud)
我的问题是,如果我选择Maths选项,我希望将值发送到例如/ 1.什么应该写在行动?怎么写这条路线?
get '' do
end
Run Code Online (Sandbox Code Playgroud) 我正在尝试创建一个小的sinatra示例,它将打印一个月,日或年的日历视图,具体取决于URL.这样
localhost:4567/calendar/2012将打印年视图日历
localhost:4567/calendar/2012/9将打印一个月的日历
localhost:4567/calendar/2012/9/15将打印日视图日历
我有这个工作:
require 'sinatra'
get '/calendar/:year/:month/:day/?' do
"printing daily calendar for #{params[:year]}/#{params[:month]}/#{params[:day]}"
end
get '/calendar/:year/:month/?' do
"printing monthly calendar for #{params[:year]}/#{params[:month]}"
end
get '/calendar/:year/?' do
"printing yearly calendar for #{params[:year]}"
end
Run Code Online (Sandbox Code Playgroud)
我的问题是,我是否可以使用某种RegEx进一步优化这些路由,以便我可以说如果:month部分在1到12之间并且:day部分在1到31之间,则仅计算url?
页面上有一个表格,我通过ajax更新.有些脚本使用表的内容.例如,其中一个使用Check all / Uncheck all表上的" "复选框到该表上check/uncheck的其他复选框.
当我执行ajax请求时,它返回几乎相同的表内容.至少,它绝对是正确的,不应该破坏脚本的功能.但是,之后没有任何脚本不再起作用.为什么?
例如,以下是*.js文件中javascript代码的一部分:
$(document).ready(function() {
$("#check-all").change(function(){
$(".my_table input[type=checkbox]").prop('checked', this.checked);
});
});
Run Code Online (Sandbox Code Playgroud)
在执行ajax之前,请求一切正常.请注意,ajax不会返回任何javascript代码,所有javascript代码都位于外部js文件中.
目前我正在编写一个Sinatra应用程序,它从用户那里获取一些图片并返回一张新图片.
有一部分haml形式:
%input{type:'file', name:'user_image'}
Run Code Online (Sandbox Code Playgroud)
还有来自处理程序的代码:(蒙太奇是另一张图片)
source_userpic = params[:user_image][:tempfile]
blob = File.open(source_userpic).read
userpic = ImageList.new
userpic.from_blob(blob)
resized_img = userpic.scale(montage.columns,
montage.rows)
resized_img.opacity = MaxRGB/3
Run Code Online (Sandbox Code Playgroud)
然后两个图像"复合"并存储(不需要)
final_picture = ImageList.new
final_picture << montage.composite(resized_img, 0, 0, OverCompositeOp)
final_picture.write("./public/uploads/#{DateTime.now}.jpg" # dirty (for example)
Run Code Online (Sandbox Code Playgroud)
接下来,我需要使用ajax显示final_picture.有两个明显的问题:第一,我不需要保存final_picture - 它只是预览,第二,我必须编写代码以避免文件名冲突...
如何发送final_picture来查看?to_blob方法?但下一步是什么?
我有一个非常基本的网络应用程序的麻烦.这是我的文件:
<!DOCTYPE html>
<html lang="en" data-ng-app>
<body>
<div data-ng-controller="PlayersCtrl">
<div data-ng-repeat="player in players">
{{player.id}}
</div>
</div>
<script src="/angular.min.js"></script>
<script src="/players.js"></script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
function PlayersCtrl($scope, $http) {
$scope.players = [];
$http({
method: 'GET',
url: 'http://localhost:9292/hi'
}).success(function(data) {
$scope.players = data;
});
}
Run Code Online (Sandbox Code Playgroud)
require 'sinatra'
get '/' do
headers 'Access-Control-Allow-Origin' => '*'
headers 'Access-Control-Allow-Headers' => 'Authorization,Accepts,Content-Type,X-CSRF-Token,X-Requested-With'
headers 'Access-Control-Allow-Methods' => 'GET,POST,PUT,DELETE,OPTIONS'
send_file File.join(settings.public_folder, 'index.html')
end
Run Code Online (Sandbox Code Playgroud)
require 'sinatra'
require 'json'
get '/hi' do
headers 'Access-Control-Allow-Origin' => '*'
headers …Run Code Online (Sandbox Code Playgroud) 我在osx 10.8上运行vmware fusion 5,我的客户操作系统是Arch Linux,目前我能够通过ssh 172.16.4.191简单的sinatra应用程序进入客户端.
require 'sinatra'
get '/hi' do
"Hello world!!!!!!!"
end
Run Code Online (Sandbox Code Playgroud)
ruby hi.rb
2013-04-06 19:45:18] INFO WEBrick 1.3.1
[2013-04-06 19:45:18] INFO ruby 2.0.0 (2013-02-24) [x86_64-linux]
== Sinatra/1.4.2 has taken the stage on 4567 for development with backup from WEBrick
[2013-04-06 19:45:18] INFO WEBrick::HTTPServer#start: pid=426 port=4567
Run Code Online (Sandbox Code Playgroud)
我的主机操作系统无法使用它
curl 172.16.4.191:4567
curl: (7) couldn't connect to host
Run Code Online (Sandbox Code Playgroud)
任何建议都会很棒,当然我会根据需要提供更多信息.
编辑:
选择与我的mac共享,"虚拟机在外部网络上共享Mac的IP地址.mac为虚拟机的网络流量提供NAT"
编辑:
我已经切换到桥接模式,它现在坐在我的局域网上,我仍然可以进入它,仍然没有这样的运气连接到我的sinatra应用程序.
并且iptables没有显示规则
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot …Run Code Online (Sandbox Code Playgroud) 我和Sinatra一起使用红宝石.我想获取访问者的公共IP并将其保存在数据库中,但不知道如何获取IP ...抱歉,但我还没有找到办法做到这一点.伙计们可以帮帮我吗?谢谢!
我无法运行我的Sinatra应用程序.
我收到以下错误:
application.rb:1:in `<main>': uninitialized constant Sinatra (NameError)
Run Code Online (Sandbox Code Playgroud)
这是application.rb的第1行:
class Application < Sinatra::Base
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
我已经安装了Sinatra作为宝石.
string.sanitize是保护sql注入的最佳方法.
我们需要为它安装Sanitize gem还是有更好的方法?
value = "O'Brian"
value.sanitize =>"O\'Brian"
or
value.escape =>"O\'Brian"
Run Code Online (Sandbox Code Playgroud)
它可能默认包含在Rails 5中,但是如何使用sinatra.