要使用sinatra返回文件,我一直在使用它:
get '/:name' do
x = File.open('c:/mywebsite/' + params[:name],'r')
end
Run Code Online (Sandbox Code Playgroud)
传入的URL是" http:// localserver:4567/myfile.html".
它有效,但它发生在我身上必须有一个更好的方法,但我找不到sinatra网站上的首选机制.
说我有这样一个块:
<% @help_sections.each do |section| %>
<li><%= section.name %></li>
<% end %>
Run Code Online (Sandbox Code Playgroud)
但是在返回的最后一条记录中,我想做其他事情,例如在li那里应用一个类:
<li class="last"><%= section.name %></li>
我怎么用最干的方式做到这一点?
谢谢.
EDIT1:
我想我会简单地使用一个if语句和lastruby方法,但不知道如何在块中做到这一点?我知道,如果我只想要该数组中的最后一个元素,我可以这样做@help_sections.last,但这在Ruby块的范围内没有意义.
场景:我有一个图片表,其中包含数百张照片。我目前正在使用“ will_paginate”对每页100张照片进行分页。我想继续使用'will_paginate',但是我希望分页能够按日进行。
我已经尝试通过使用以下方法,sort_by但是我认为它没有用。
@pics = Picture.paginate(:page => params[:page]).sort_by(&:created_at)
最终目标:
主页仅显示我今天的照片。
现在,如果我单击第2页,则仅显示昨天的照片。
现在,如果单击第3页,它将显示两天前拍摄的照片。
我想继续使用 will_paginate
我有一个在Ubuntu/Apache2/Passenger上运行的Sinatra应用程序.
这是一个简单的URL缩短器,可以在我的登台服务器上运行,但在导入旧数据库(包含缩短的URL)时开始抛出以下错误:
undefined method `include?' for nil:NilClass
file: resource.rb location: block in attributes= line: 332
Run Code Online (Sandbox Code Playgroud)
完全回溯在这里:
/usr/lib/ruby/gems/1.9.1/gems/dm-core-1.2.0/lib/dm-core/resource.rb in block in attributes=
if model.allowed_writer_methods.include?(setter = "#{name}=")
/usr/lib/ruby/gems/1.9.1/gems/dm-core-1.2.0/lib/dm-core/resource.rb in each
attributes.each do |name, value|
/usr/lib/ruby/gems/1.9.1/gems/dm-core-1.2.0/lib/dm-core/resource.rb in attributes=
attributes.each do |name, value|
/websites/sinatra/shortener/application.rb in block in <top (required)>
ct.attributes = {
/usr/lib/ruby/gems/1.9.1/gems/sinatra-1.3.2/lib/sinatra/base.rb in call
proc { |a,p| unbound_method.bind(a).call } ]
/usr/lib/ruby/gems/1.9.1/gems/sinatra-1.3.2/lib/sinatra/base.rb in block in compile!
proc { |a,p| unbound_method.bind(a).call } ]
/usr/lib/ruby/gems/1.9.1/gems/sinatra-1.3.2/lib/sinatra/base.rb in []
route_eval { block[*args] }
/usr/lib/ruby/gems/1.9.1/gems/sinatra-1.3.2/lib/sinatra/base.rb in block (3 levels) …Run Code Online (Sandbox Code Playgroud) 我正在尝试对Sinatra应用程序进行一些愚蠢的自动配置,允许从不同的子URI使用它,具体取决于它是使用Apache和Passenger运行,还是使用Thin Web服务器运行.
所以我的问题是:是否有可能从Sinatra应用程序中找出哪个Web服务器运行它?
我正在开发一个软件即服务站点,我们将主要使用主干,但我注意到的是,应用程序的大部分逻辑都在于主干.虽然我们主要使用ruby作为会话控制器和数据库的桥梁.所以我们的网站很容易被复制.(只是复制js文件的问题......)
我知道这可能是一个愚蠢的问题但是,无论如何我可以避免这种情况,或者像这样的客户端重型应用程序对这种类型的应用程序有害吗?
我不确定如何在此时保护此站点结构.
我需要一些帮助打印我的哈希值.在我的"web.rb"文件中,我有:
class Main < Sinatra::Base
j = {}
j['Cordovan Communication'] = {:title => 'UX Lead', :className => 'cordovan', :images => ['http://placehold.it/350x150','http://placehold.it/350x150','http://placehold.it/350x150']}
j['Telia'] = {:title => 'Creative Director', :className => 'telia', :images => ['http://placehold.it/350x150','http://placehold.it/350x150','http://placehold.it/350x150','http://placehold.it/350x150']}
get '/' do
@jobs = j
erb :welcome
end
end
Run Code Online (Sandbox Code Playgroud)
在"welcome.rb"中我打印哈希值,但它不起作用:
<% @jobs.each do |job| %>
<div class="row">
<div class="span12">
<h2><%=h job.title %></h2>
</div>
</div>
<% end %>
Run Code Online (Sandbox Code Playgroud)
这是我的错误消息:
NoMethodError at / undefined method `title' for #<Array:0x10c144da0>
Run Code Online (Sandbox Code Playgroud) 我在Ruby 1.9.3中遇到了问题.这是我的文件结构
App
|-- config
|-- database_setup.rb
|-- models
|-- *.rb
Run Code Online (Sandbox Code Playgroud)
我的database_setup.rb需要要求models文件夹中的所有rb文件.我很难找到正确的目录.
我正在尝试为cms网站建立一个管理员后端.
这是我的应用程序的结构
??? app.rb
??? Gemfile
??? models
? ??? models.rb
??? routes
? ??? routes.rb
??? views
??? categories.erb
??? # ... other view files
Run Code Online (Sandbox Code Playgroud)
app.rb
require 'sinatra'
require 'data_mapper'
require 'dm-core'
require 'dm-migrations'
require 'digest'
enable :sessions
DataMapper.setup(:default, 'mysql://username:password@localhost/database')
require './models/models.rb'
require './routes/routes.rb'
DataMapper.finalize
Run Code Online (Sandbox Code Playgroud)
models.rb
class Category
include DataMapper::Resource
property :id, Serial
property :name, String
has n, :posts
end
# other model definitons
Run Code Online (Sandbox Code Playgroud)
我在routes.rb中定义了categories一条路线
...
get '/categories' do
@categories = Category.all
erb :categories
end …Run Code Online (Sandbox Code Playgroud) ruby ×10
sinatra ×10
backbone.js ×1
datamapper ×1
erb ×1
file ×1
gem ×1
javascript ×1
nameerror ×1
rack ×1
require ×1