标签: sinatra

Sinatra路由例外

我希望能够做到以下几点:

get '/:slug' do
  haml :page
end

get '/administration' do
  haml :admin
end
Run Code Online (Sandbox Code Playgroud)

有没有办法可以get '/:slug' do让/管理有例外?我意识到你可以使用if else语句来做到这一点:

get '/:slug' do
  if params[:slug] == 'administration'
    haml :admin
  else
    haml :page
  end
end
Run Code Online (Sandbox Code Playgroud)

但那看起来不是很干净.有没有办法让路线有例外?

ruby routing sinatra

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

什么是Rails application.html.erb的Sinatra Equivelant?

application.html.erb是一个应用于rails中所有视图的文件.在某种程度上,它的主文件,所有子文件之后的样式/结构.

我如何在Sinatra中使用它?

ruby ruby-on-rails sinatra

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

如何制作机架会话cookie?

我正在使用Ruby和Sinatra开发一个应用程序.
我用

enable :sessions
Run Code Online (Sandbox Code Playgroud)

为了使用rack提供的会话变量.如何使所有会话cookie成为HTTPOnly?这是默认的吗?我找不到任何关于此的文件.

ruby session rack httponly sinatra

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

使用Datamapper在Sinatra中选择,复选框和单选按钮元素

将Datamapper与Sinatra一起使用,保存文本属性非常简单:

DataMapper::setup(:default, "sqlite3://#{Dir.pwd}/tailor.db")  
class Person  
  include DataMapper::Resource  
  property :id, Serial  
  property :name, String, :required => true
  property :height, String, :required => false
end  
DataMapper.finalize.auto_upgrade!

...

put '/:id/edit' do
  p = Person.get params[:id]
  p.name = params[:name]
  p.height = params[:height]
  p.save
end
Run Code Online (Sandbox Code Playgroud)

并且观点:

%form
  %input{:type => 'text', :name => 'name'}
  %input{:type => 'text', :name => 'height'}
  %input{:type => 'submit', :value => 'Save'}
Run Code Online (Sandbox Code Playgroud)

随着:type => 'text'它是一件轻而易举的事.但是,我在尝试property :test, Boolean, :required => false使用复选框设置boolean()时遇到了麻烦.这个问题类似,但没有解决如何做一个简单的布尔值.

另外,设置不接受任何字符串的值的最简单方法是什么,而只是一组预定义的选项 - 作为允许一个选择的选择,还是允许多个选项的一组单选按钮?

编辑:

我想出了复选框:

p.bool …
Run Code Online (Sandbox Code Playgroud)

ruby haml sinatra

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

RSpec只能查看我的Lib目录的根目录中的类

RSpec(2.12.2)让我很难过.如果我想在我的一个规范中引用一个类,并且该类不在我的/lib目录的根目录中,则会抛出一个错误:

no such file to load -- test (LoadError)
Run Code Online (Sandbox Code Playgroud)

似乎我的规范可以嵌​​套在文件夹结构中,但是当我尝试并且需要一个嵌套文件夹中的类时(例如lib/workers/conversion_worker.rb),我得到了这个错误.

我在所有规范中都使用了'spec_helper',但即使对类路径进行硬编码也会导致同样的错误.

有了这个结构:

-lib/
  - class_found.rb
  - workers/
     - class_not_found.rb
Run Code Online (Sandbox Code Playgroud)

规范看起来像这样:

# spec/workers/class_not_found_spec.rb
require "spec_helper"
require "class_not_found"

describe ClassNotFound do    
  it "Does something"
end
Run Code Online (Sandbox Code Playgroud)

以下命令成功运行规范(-I标志添加$ LOAD_PATH的路径):

$ rspec spec/workers/class_not_found_spec.rb -I /Path/to/project/*
Run Code Online (Sandbox Code Playgroud)

因此,似乎RSpec没有在其路径下添加lib以下的任何内容.

我可以使用require_relative成功地要求class_not_found.rb:

require_relative "../../lib/workers/class_not_found.rb" #Succeeds
Run Code Online (Sandbox Code Playgroud)

但不使用require:

require "lib/workers/class_not_found.rb" # Fails
Run Code Online (Sandbox Code Playgroud)

ruby specs rspec sinatra

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

无法让Sinatra Flash Gem工作

我试图在成功提交表格后出现闪光通知.在Rails中我会在控制器中使用这样的东西:

:notice => "Youve submitted the form"
Run Code Online (Sandbox Code Playgroud)

我遇到了Sinatra flash gem,想在重定向后显示flash消息.我像这样安装了gem和setup:

myapp.rb:

require 'sinatra/flash'
enable :sessions

#form config
 )}
redirect '/success' # this is the hook after my form submission
end

get('/success') do
 flash[:success] = "Thanks for your email. I'll be in touch soon."
 erb :index 
end
Run Code Online (Sandbox Code Playgroud)

所有这一切都是我被重定向到没有flash消息的索引页面.看看文档,这是我能看到的,我需要做的.有人看到有什么不同吗?

ruby alert sinatra

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

烧瓶相当于Sinatra的"过客"

在我的Flask应用程序中,我想公开一个这样的URI:

http://<base_uri>/some_string

我希望以不同的方式处理对它的请求,具体取决于是否some_string为整数.

使用Sinatra,我可以通过" 传递 " 来实现,如下所示:

get '/:some_string' do
  if is_integer(:some_string)
    'Your URI contains an integer'
  else 
    pass # This will pass the request on the the method below which can handle it
end

get '/*' do
  'Your URI contains some string'
end
Run Code Online (Sandbox Code Playgroud)

这里pass第一个路由中的调用允许第二个路由处理请求(如果:some_string不是整数).

我在Flask中找不到任何等效的功能.有人可以在Flask中推荐一个解决方案吗?

python sinatra flask

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

ember-auth在我的开发机器上发送OPTIONS请求而不是POST

我有一个基于Sinatra的服务器,它为我正在处理的服务提供RESTful API.在我的开发机器上运行localhost:9393.

同时,用于用户身份验证的客户端应用程序(内置ember.js)ember-auth在另一个端口上运行:localhost:9000.

以前我在同一主机上设置服务器和客户端:端口和返回的客户端应用程序作为静态文件.身份验证工作得很好.根据SignIn 的官方文档,我在我提供的路线(/signin)上获得了POST请求.但现在我接受OPTIONS请求,没有任何参数.

来自客户端的一些代码(客户端是通过Yeoman的ember-generator生成的):

的index.html

<!doctype html>
<html>
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta name="description" content="" />
    <meta name="author" content="" />
    <title>Ember Starter Kit</title>

    <!-- build:css styles/main.css -->
    <link rel="stylesheet" href="styles/normalize.css">
    <link rel="stylesheet" href="styles/bootstrap.css">
    <link rel="stylesheet" href="styles/bootstrap-responsive.css">
    <link rel="stylesheet" href="styles/style.css">
    <!-- endbuild -->
  </head>
  <body>

    <!-- build:js scripts/components.js -->
    <script src="components/jquery/jquery.js"></script>
    <script src="components/handlebars/handlebars.runtime.js"></script>
    <script src="components/ember/ember.js"></script>
    <script src="components/ember-data/ember-data-latest.js"></script>
    <script src="components/ember-auth/ember-auth.js"></script>
    <!-- endbuild …
Run Code Online (Sandbox Code Playgroud)

sinatra ember.js

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

如何在sinatra app中不包含layout.haml

我有一个使用haml的ruby sinatra应用程序.我将layout.haml用于所有页面的公共菜单.假设我有login.haml,main.haml和reports.haml.我只想将layout.haml用于login.haml和main.haml.如何从reports.haml中排除layout.haml?谢谢

ruby layout sinatra

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

Sinatra - 多个公共目录

我想链接到Sinatra设置的默认公共目录之外的CSS和JavaScript文件.

我知道我可以set :public用来更改目录,但我想保留默认目录和其他'public_2'.

有没有办法做到这一点?

ruby public sinatra

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

标签 统计

sinatra ×10

ruby ×8

alert ×1

ember.js ×1

flask ×1

haml ×1

httponly ×1

layout ×1

public ×1

python ×1

rack ×1

routing ×1

rspec ×1

ruby-on-rails ×1

session ×1

specs ×1