标签: sinatra

Ruby/Sinatra中的范围

我正在尝试识别用户ID号,从ActiveRecord表中获取学生行,但由于某种原因,"post"块将找不到我的:id.

对于'get',url是localhost:9456/update/17.这是我需要传递到'post'块来更新数据库.

我不知道该怎么做.解析URL?好像我错过了一些明显的东西.

# update user page
get '/update/:id' do
  @student = Student.find(params[:id]) #this returns ID=17
  erb :update
end

#update user submit
post '/update' do
  @student = Student.find(params[:id])  #this line doesn't work
  @student.name = (params[:name])
  @student.email = (params[:email])
  @student.save
  redirect '/'
end
Run Code Online (Sandbox Code Playgroud)

谢谢!

ruby parameters sinatra

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

Ruby MongoDB-如何根据日期时间对记录进行排序?

我必须以错误的方式完成它:打印出的记录是乱序的,即使它们一次插入到db中.这是代码:

get '/' do
  db = Mongo::Connection.new("localhost", 27017).db("testdb")
  @notes = db.collection('notes')
  @notelist = Set.new()
  @notes.find().each{|record| @notelist.add(record)}
  erb :list
end

post '/addnote' do
  db = Mongo::Connection.new("localhost", 27017).db("testdb")
  col1 = db.collection('notes')
  col1.insert(
  {
    "guestname" => "#{params[:post][:guestname]}",
    "note"      => "#{params[:post][:note]}",
    "datetime"  => Time.now.strftime("%I:%M %p %d-%b-%Y")
  })
redirect '/'
end
Run Code Online (Sandbox Code Playgroud)

这是erb模板:

<p><%= @notelist.size() %> notes entered by guests:</p>
<ul>
  <% @notelist.each do |record| %>
    <li><font color='blue'><%= record['guestname'].to_s() + 
    "</font> at <i>" + record['datetime'].to_s() +"</i> wrote: " + 
    record['note'].to_s() %></li>
  <% end %>
</ul>
Run Code Online (Sandbox Code Playgroud)

我试图按日期时间顺序从数据库中获取所有记录,我该如何实现? …

ruby sinatra mongodb

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

Sinatra/Rack params []在块之前

我正在使用Sinatra创建一个站点,一切进展顺利,或者直到我需要访问块中的params[]哈希值before.

基本上,我正在尝试这样做:

before do
  if params[:forum_id]
    @forum = Forum.find(params[:forum_id])
    build_breadcrumbs(@forum.parents)
    # ... more code, snipped to keep it short
  end
end
Run Code Online (Sandbox Code Playgroud)

但问题是,我不能params[]before块中调用哈希,有没有人有任何想法?

我把这个代码放在before块中的原因是因为我不想把它放在每个页面的每个块getpost块中.

ruby rack sinatra

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

在需要sinatra/base时查找公用文件夹的问题

我发现在我的Sinatra应用程序中,当我require 'sinatra',我可以按预期访问我的公共文件夹,但是当我require 'sinatra/base'不能.这是我的相关代码(直到我更改为止/base):

config.ru

root = ::File.dirname(__FILE__)
require ::File.join( root, 'app' )
run MyApp.new
Run Code Online (Sandbox Code Playgroud)

app.rb

require 'sinatra'
require 'sinatra/namespace'
require 'haml'

class MyApp < Sinatra::Application
  # ...
end

require_relative 'models/init'
require_relative 'helpers/init'
require_relative 'routes/init'
Run Code Online (Sandbox Code Playgroud)

script.haml

%script(type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js")
%script(type="text/javascript" src="/js/table.js")
%link(rel="stylesheet" type="text/css" href="/css/table.css")
Run Code Online (Sandbox Code Playgroud)

是的,我有正确的目录结构.就像我说的,它有效require sinatra.任何人都知道为什么会发生这种情况以及我能做些什么来解决它?

ruby haml sinatra

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

Ruby时段类

Ruby有一个代表某段时间的类吗?

IE,1小时,2分钟,3秒.

我意识到有时间类,但构造函数需要一年,一个月和一天.这些都与我正在尝试创建的抽象无关.

注意:与Sinatra合作.

ruby time sinatra

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

使用特定路径加载Haml/Erb

我希望能够在我的网络应用程序中传递特定路线.它是一个很好的尺寸(和不断增长)sinatra应用程序.

是)我有的

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

我想要的是

get '/' do
  haml :/specific/path/Hello_World
end
Run Code Online (Sandbox Code Playgroud)

我意识到我可以用更改根目录
set :views, settings.root + '/my/path'

但这确实不是一个更好的选择,因为我需要多个特定路线.

ruby sinatra

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

Rspec和Sinatra只是对我不起作用,但我希望他们这样做

我以前从未使用过Sinatra,也从来没有手动配置过Rspec(总是使用Rails的预写脚本),但是我想尝试一下。

但是我遇到了麻烦,我设法使RSpec可以工作,但是我遇到了错误,只是让它识别Sinatra的方法。

我想知道改用它是否更好Rack::Test

我当前的问题是atm:

1)rake失败Don't know how to build task 'default'

2)当我使用rspec它失败与undefined method get for #<RSpec::ExampleGroups::MySinatraApplication:0

现在显然我在做错事,但是我不知道该怎么办。我正在跟踪一些发现的问题,但是很好,我只是做得不好。

RakeFile:

require 'rspec/core/rake_task'


RSpec::Core::RakeTask.new do |task|
  task.rspec_opts = ['-c', '-f progress', '-r ./spec/spec_helper.rb']
  task.pattern = './spec/**/*_spec.rb'
end
Run Code Online (Sandbox Code Playgroud)

spec_helper.rb

require 'rspec'
require 'rack/test'

RSpec.configure do |conf|
  conf.include Rack::Test::Methods
end
Run Code Online (Sandbox Code Playgroud)

app_spec.rb

ENV['RACK_ENV'] = 'test'

require '../../myapp'
require 'rspec'
require 'rack/test'

describe 'My Sinatra Application' do

  include Rack::Test::Methods

  def app
    Sinatra::Application
  end

  it "says hello" do
    get '/' …
Run Code Online (Sandbox Code Playgroud)

ruby rspec sinatra

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

Sinatra-错误处理

当服务器上出现错误(例如IOError或ArgumentError)时,我试图使sinatra应用程序显示自定义错误页面。

当前,我正在使用AJAX将结果加载到某个#resultsdiv中,但是如果并且在服务器上出现错误时,我希望在新页面上打开错误页面。

当前,服务器上显示IOError并在控制台中看到错误(服务器响应状态为500(内部服务器错误))。除此之外,什么也没有发生。

我认为我必须使用Javascript(以及Sinatra :: Base类),但是我花了整个整个昨天和今天的早晨。

我将非常感谢您的帮助。我为应用创建了一个过于简化的版本,如下所示...

Sinatra_app.rb

require 'sinatra/base'
require9 'sinatra'
require 'slim'

# A helper module
module GVhelpers
  def create_results(name)
    # raise IOError, "There's a problem..."
    return "<p>The Server Says 'Hey #{name}'</p>"
  end
end

class GVapp < Sinatra::Base
  helpers GVhelpers
  set :root, File.dirname(__FILE__)

  error do 
    @error = env['sinatra.error']
    slim :"500", :locals => {:error => error}
  end

  get '/' do
    slim :index
  end

  post '/form' do
    name = params[:personName]
    create_results(name)
  end
end

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

index.slim(在views文件夹中)

script src="/jquery.min.js" …
Run Code Online (Sandbox Code Playgroud)

ruby sinatra

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

ActiveRecord - 从数据库中获取第5-10条记录

我很好奇地看到如何从n到kth获得记录.我不知道我是否错过了,但是通过文档并没有对我有利.

我不是说我想要记录,其中id介于5 - 10之间,但记录介于5 - 10之间.如何进行此操作?

ruby orm activerecord sinatra

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

潇洒 - 未初始化的恒定Nokogiri异常

当我尝试开始潇洒时,我收到以下错误:

scheduler caught exception:
uninitialized constant Nokogiri
/Users/Adam/projects/ticker/jobs/sample.rb:2:in `block in <top (required)>'
Run Code Online (Sandbox Code Playgroud)

我的Gemfile是:

source 'https://rubygems.org'

gem 'nokogiri'
gem 'dashing'
Run Code Online (Sandbox Code Playgroud)

我的jobs文件夹包含一个文件夹sample.rb:

SCHEDULER.every '2s' do
  oil_doc = Nokogiri::HTML(open("http://www.bloomberg.com/energy/"))
  a = oil_doc.css("table.std_table_module").first
  price = a.xpath("//td[3]").first.children.text
  send_event('valuation', { current: price })
end
Run Code Online (Sandbox Code Playgroud)

我已经尝试添加 require 'open-uri'到Gemfile和sample.rb但它没有帮助!

ruby sinatra nokogiri rufus-scheduler gemfile

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

标签 统计

ruby ×10

sinatra ×10

activerecord ×1

gemfile ×1

haml ×1

mongodb ×1

nokogiri ×1

orm ×1

parameters ×1

rack ×1

rspec ×1

rufus-scheduler ×1

time ×1