我的样式表应用于我的应用程序的某些元素而不是其他元素,我不确定为什么。这是我的文档结构:目前,样式表正在应用于index.erb和contacts.erb,但没有应用于树中的其他部分,我不确定为什么。在我的布局中我指定了:有什么想法吗? 最佳答案 您正在使用对样式表的相对引用,因此浏览器将请求它相对于当前url。这意味着对于/和/contacts浏览器将请求/styles.css并找到它,但是例如/contacts/1它将请求不存在的/contacts/style.css。如果您检查日志,您可能会在发生这种情况的地方看到大量404。
我想定义一个错误block(或其他东西),它将以某种方式返回以JSON格式化的所有异常加上返回标准的http代码(例如404表示未找到,303用于身份验证错误等)。类似于:errordoe=env['sinatra.error']json:result=>'error',:message=>e.messageend谢谢! 最佳答案 这应该有效:require'sinatra'require'json'#Thisisneededfortesting,otherwisethedefault#errorhandlerkicksinset:
关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭8年前。Improvethisquestion如果我学习Sinatra或Padrino,这对我使用RubyonRails有帮助吗?我认为对于所有这些,我需要更好地了解Ruby本身,但是(比如说)Padrino是直接转化为我将在RubyonRails中使用的技能还是间接转化为技能?我是一名PHP程序员,但是,因为我使用过RubyonRails的克隆PHP框架,所以我发现它并不太难。
如何在自定义助手中访问Sinatra的params散列?例如:#inapp/helpers/my_helper.rbmoduleMyAppmoduleMyHelperdefself.test()params.inspectendendend#inapp.rbhelpersMyHelpertest_result=test#undefinedmethod`params'forMyApp:Module 最佳答案 你不需要self作为助手:moduleMyAppmoduleMyHelperdeftest()params.inspectend
我想在Sinatra中扩展一个方法到String类,在erb文件中,做类似的事情但是我不知道怎么放定义代码:String.class_evaldodefmy_mythodsome_codeendend顺便说一下,我使用的是sinatra模块化编码风格 最佳答案 我倾向于将这样的代码放在它自己的文件中,在lib/ext文件夹下。然后,您可以从Sinatra应用程序中获取此文件。在lib/ext/string.rb下:classStringmy_mythodsome_codeendend然后将以下内容添加到您的Sinatra应用程序中,
我在将回形针与sinatra和mongoid一起使用时遇到问题。当我上传时显示以下错误:Paperclip::AdapterRegistry::NoHandlerError-Nohandlerfoundfor{"tempfile"=>#,"filename"=>"image-[Converted].jpg","content_type"=>"image/jpeg","size"=>35222}:在模型中所以我离开了:classUserincludeMongoid::DocumentincludeMongoid::Papercliphas_mongoid_attached_file:av
我正在尝试在异步sinatra请求期间返回一个文件,如下所示:aget"/test"doif(File.exists?("test.tar"))send_file("test.tar",:filename=>"test.tar",:type=>"application/octet-stream")returnendEM.defer(proc{#createtest.tar},proc{|r|send_file("test.tar",:filename=>"test.tar",:type=>"application/octet-stream")})然而,当我这样做时,似乎出现了错误:wr
我正在尝试使用Sinatra的内置send_file命令,但它似乎不适用于临时文件。我基本上执行以下操作来压缩mp3专辑:get'/example'dosongs=...file_name="zip_test.zip"t=Tempfile.new(['temp_zip','.zip'])#t=File.new("testfile.zip","w")Zip::ZipOutputStream.open(t.path)do|z|songs.eachdo|song|name=song.namename+=".mp3"unlessname.end_with?(".mp3")z.put_next_
我正在构建的站点要求用户一次只能通过一个session登录。如果用户在当前已登录的情况下尝试从其他浏览器或机器登录站点,则需要拒绝他们的登录尝试。我考虑过将数据库中的用户对象标记为已登录,但这对我来说似乎很脆弱,因为如果用户实际上没有正式注销,那么该标记会持续存在并且用户会被不公平地拒绝。为了解决这个问题,我必须定期运行某种清理任务以确保重置这些标志,这可能会引入各种其他问题。我使用Sinatra作为核心框架,使用Warden作为身份验证管理器。是否有针对此类要求的“最佳实践”策略? 最佳答案 这确实不是身份验证问题,而是“当经过身
我创建了一个Sinatra小应用程序并使用Puma来运行它。我已经将我的应用程序部署到Heroku并且一切正常,但是如果我点击我的应用程序的外部链接,我会收到响应Forbidden。这是从哪里来的?应用只定义了一个HTTP方法:require'sinatra'get'/'doheaders'Content-Type'=>'application/json'body'HelloWorld'end例如以下https://contactsampleprovider.herokuapp.com/将导致Forbidden,但在浏览器中手动输入URL可以正常工作。如果我省略headers调用,一切