标签: sinatra

联系表格,红宝石,sinatra和haml

我是这三个人的新手,我正在尝试为网站写一个简单的联系表格.我提出的代码如下,但我知道它存在一些基本问题(由于我对sinatra缺乏经验).得到这个工作的任何帮助将不胜感激,我似乎无法弄清楚/找到这类事情的文档.

来自联系页面的haml代码:

%form{:name => "email", :id => "email", :action => "/contact", :method => "post", :enctype => "text/plain"}
  %fieldset
    %ol
      %li
        %label{:for => "message[name]"} Name:
        %input{:type => "text", :name => "message[name]", :class => "text"}
      %li
        %label{:for => "message[mail]"} Mail:
        %input{:type => "text", :name => "message[mail]", :class => "text"}
      %li
        %label{:for => "message[body]"} Message:
        %textarea{:name => "message[body]"}
    %input{:type => "submit", :value => "Send", :class => "button"}
Run Code Online (Sandbox Code Playgroud)

这是我在sinatra的app.rb中的代码:

require 'rubygems'
require 'sinatra'
require 'haml'
require 'pony'

    get '/' do
        haml :index
    end 

    get …
Run Code Online (Sandbox Code Playgroud)

ruby haml sinatra pony

30
推荐指数
3
解决办法
4万
查看次数

Ruby Sinatra Webservice在localhost上运行:4567但不在IP上运行

我在Windows 7 32位操作系统上有一个ruby(使用sinatra)webservice.它在端口4567上运行.当我使用localhost时工作正常:4567但是当我用我的机器的本地ip替换localhost时,192.168.103.99 :4567它不起作用,并且无法连接.我已经禁用了防火墙,旁路代理并将端口4567添加到异常,仍然没有运气.

可能是什么问题?

ruby web-services ruby-on-rails webrick sinatra

30
推荐指数
3
解决办法
2万
查看次数

在本地Sinatra Development中包含本地(JS和CSS)文件

我一直在我的本地Windows机器上试用Sinatra.我想要包含一些本地CSS和JS文件.这是代码在layout.erb中的样子

<script src="jquery.js" type="text/javascript">
</script>
<link rel="stylesheet" href="reset.css" type="text/css" /> 
Run Code Online (Sandbox Code Playgroud)

我的所有文件都与app.rb位于同一个文件夹中

这是我的app.rb

require 'rubygems'
require 'sinatra'

get '/' do
  erb :index
end
Run Code Online (Sandbox Code Playgroud)

出于某种原因,我无法看到这些文件包含在我的页面中.当我查看源代码并单击文件(JS/CSS)时,我看到 - "Sinatra不知道这个小曲" - 错误.

我在这做错了什么?

sinatra

29
推荐指数
2
解决办法
2万
查看次数

在Sinatra(Ruby)中,如何在应用程序生命周期中创建仅赋值一次的全局变量?

在Sinatra中,我无法创建在应用程序生命周期中仅赋值一次的全局变量.我错过了什么吗?我的简化代码如下所示:

require 'rubygems' if RUBY_VERSION < "1.9"
require 'sinatra/base'

class WebApp < Sinatra::Base
  @a = 1

  before do
    @b = 2  
  end

  get '/' do
    puts @a, @b
    "#{@a}, #{@b}"
  end

end

WebApp.run!
Run Code Online (Sandbox Code Playgroud)

这导致了

nil
2
Run Code Online (Sandbox Code Playgroud)

在终端和,2浏览器中.

如果我尝试@a = 1输入initialize方法,我会收到错误WebApp.run!.

我觉得我错过了一些东西,因为如果我不能拥有全局变量,那么如何在应用程序实例化期间加载大数据呢?

before do 似乎每次有来自客户端的请求时都会调用它.

ruby web-applications sinatra

28
推荐指数
2
解决办法
2万
查看次数

你用Sinatra做什么用的?

我对Sinatra(红宝石框架)感到困惑.

它是一个轻量级的Rails替代品还是你可以让它们并排运行?

你可以做一个Web应用程序(如在Rails中)吗?比如一个twitter克隆?

ruby sinatra

27
推荐指数
3
解决办法
1万
查看次数

Sinatra - 我如何获得服务器的域名

我正在尝试在我的Sinatra应用程序中获取域名,但作为一个新手我真的很难弄清楚如何做到这一点,我知道它一定是可能的!

Rack::Request#host_with_port 看起来很有前途,但我不知道如何从我的应用程序中获取 - 我如何从我的Ruby代码中获取Rack的东西?

或者还有另一种方式 - 我想我每次发生请求时都不想这样做(虽然它不是太糟糕),但我认为如果我能在应用程序中执行一次会更好加载.

任何提示?

ruby domain-name sinatra

27
推荐指数
2
解决办法
1万
查看次数

Sinatra中与动词无关的匹配

我们可以写

get '/foo' do
  ...
end
Run Code Online (Sandbox Code Playgroud)

post '/foo' do
  ...
end
Run Code Online (Sandbox Code Playgroud)

这很好.但是我可以在一个路由中组合多个HTTP动词吗?

ruby sinatra

27
推荐指数
3
解决办法
4852
查看次数

如何在sinatra中引发自定义错误代码?

我在我的sinatra应用程序中执行了以下操作:

disable :show_exceptions
disable :raise_errors

error do
  haml :error, :locals => {:error_message => request.env['sinatra.error'].to_s}
end

get '/error' do
  raise "ERROR!!"
end
Run Code Online (Sandbox Code Playgroud)

如果我访问/error我得到一个500 - Internal Server Error响应代码,这是上帝和想要的.但是如何将代码更改为404或501?

答案:

disable :show_exceptions
disable :raise_errors

get '/error' do
  halt(404,haml(:error, :locals => {:error_message => request.env['sinatra.error'].to_s}))
end
Run Code Online (Sandbox Code Playgroud)

ruby error-handling sinatra

27
推荐指数
2
解决办法
2万
查看次数

在Sinatra中使用Rack :: CommonLogger

我有一个与Sinatra一起编写的小型Web服务器.我希望能够将消息记录到日志文件中.我通过http://www.sinatrarb.com/api/index.html和www.sinatrarb.com/intro.html 阅读,我看到Rack有一个名为Rack :: CommonLogger的东西,但我找不到如何访问和用于记录消息的任何示例.我的应用程序很简单所以我把它写成顶级DSL,但我可以切换到从SinatraBase继承它,如果这是所需要的一部分.

ruby logging rack error-logging sinatra

26
推荐指数
2
解决办法
3万
查看次数

使用Rack :: Session :: Cookie删除当前会话

我觉得我在这里遗漏了一些明显的东西,我希望我发布这个时候有人会因为我失踪的谷歌搜索链接而感到羞耻:-)

enable :sessions

get '/logout' do
  # What goes here to kill the session?
end
Run Code Online (Sandbox Code Playgroud)

ruby session rack sinatra

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