我一直在使用 MEAN 堆栈,但遇到了我的 CSS 无法在某些页面上正确加载的问题。尝试以下两个链接来比较/理解:
https://edmtl.herokuapp.com/song
https://edmtl.herokuapp.com/song/
布局.jade:
doctype html
html
head
title= title
meta(name="viewport" content="width=device-width, initial-scale=1.0")
link(rel='stylesheet', href='css/bootstrap.css')
link(rel='stylesheet', href='css/style.css')
应用程序.js:
var song = require('./routes/addSong');
app.use('/song', song);
routes/addSong.js:
var express = require('express');
var router = express.Router();
var db = require('mongoose-simpledb').db;
/* GET home page. */
router.get('/', function(req, res) {
res.render('addSong', {title: 'Add A Song'});
});
router.post('/createNew', function(req,res){
var song = new db.Post({
name: req.body.songname,
artist: req.body.artist.split(","),
remix: req.body.remix,
genre: req.body.genre,
url: req.body.url,
description: req.body.description,
blogger: req.body.blogger
});
song.save(function (err,song){
if(err) return console.error(err);
res.send(song);
});
});
router.get('/:songid', function(req,res){
db.Post.find({_id: req.param('songid')}, function(err, song){
if (err) return console.error(err);
res.render('song', {title: song.name,
songInfo: [song]});
});
});
module.exports = router;
添加歌曲.jade:
扩展布局
block content
center
div(style="text-align: left; width: 600px")
form(method='POST' action='/song/createNew')
div
label(for='songname') Song Name:
input(type='text' name='songname')
div
label(for='artist') Artist:
input(type='text' name='artist')
div
label(for='remix') Remixed By:
input(type='text' name='remix')
div
label(for='genre') Genre:
ul
li
input(type="checkbox" name="genre" value="Dubstep")
span Dubstep
li
input(type="checkbox" name="genre" value="Chill Out")
span Chill Out
li
input(type="checkbox" name="genre" value="Progressive House")
span Progressive House
li
input(type="checkbox" name="genre" value="Deep House")
span Deep House
li
input(type="checkbox" name="genre" value="Electro House")
span Electro House
li
input(type="checkbox" name="genre" value="Trap")
span Trap
li
input(type="checkbox" name="genre" value="Drum and Bass")
span Drum and Bass
li
input(type="checkbox" name="genre" value="Big Room")
span Big Room
li
input(type="checkbox" name="genre" value="Funk")
span Funk
div
label(for='url') URL:
input(type='url' name='url')
div
label(for='description') Description:
br
textarea(rows="4" cols="80" name='description')
div
label(for='blogger') Blogger:
input(type='text' name='blogger')
div
input(type='submit' value='Create!')
最佳答案
我发现了你的问题。
改变这些:
link(rel='stylesheet', href='css/bootstrap.css')
link(rel='stylesheet', href='css/style.css')
对此:
link(rel='stylesheet', href='/css/bootstrap.css')
link(rel='stylesheet', href='/css/style.css')
您总是希望在标记相对路径中使用前面的斜杠。在相对路径前加上斜杠总是指应用程序根目录。如果您省略斜杠,那么它会尝试查看相对于您所在页面的路径。
检查一下:
因为您在 link 标记中遗漏了前面的斜杠,它会尝试查找与“歌曲”相关的电子表格,而不是应用程序根目录。省略 URL 中的尾部斜杠会使页面上的相对路径看起来在相同的相对路径中(在您的情况下恰好是应用程序根目录,因此它有效)。
如果您的 URL 是 https://edmtl.herokuapp.com/song/something 那么它会再次在 https:/寻找 。将尾部斜杠添加到页面 URL 将使其在 bootstrap.css/edmtl.herokuapp.com/song/css/bootstrap.csshttps://edmtl.herokuapp.com/song/something/css/bootstrap.css 中查找它。在页面 URL 中包含前面的斜线将始终确保它在 https://edmtl.herokuapp.com/ 的应用程序根目录中查找 :)
PS - 所有网络应用都是如此,而不仅仅是 express/MEAN 应用。
关于javascript - ExpressJs 不在某些路线上加载 CSS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27413764/
我在MiniTest::Spec和Capybara中使用以下规范:find_field('Email').must_have_css('[autofocus]')检查名为“电子邮件”的字段是否具有autofocus属性。doc说如下:has_css?(path,options={})ChecksifagivenCSSselectorisonthepageorcurrentnode.据我了解,字段“Email”是一个节点,因此调用must_have_css绝对有效!我做错了什么? 最佳答案 通过JonasNicklas得到了答案:No
鉴于我有以下迁移:Sequel.migrationdoupdoalter_table:usersdoadd_column:is_admin,:default=>falseend#SequelrunsaDESCRIBEtablestatement,whenthemodelisloaded.#Atthispoint,itdoesnotknowthatusershaveais_adminflag.#Soitfails.@user=User.find(:email=>"admin@fancy-startup.example")@user.is_admin=true@user.save!ende
我想向我的Controller传递一个参数,它是一个简单的复选框,但我不知道如何在模型的form_for中引入它,这是我的观点:{:id=>'go_finance'}do|f|%>Transferirde:para:Entrada:"input",:placeholder=>"Quantofoiganho?"%>Saída:"output",:placeholder=>"Quantofoigasto?"%>Nota:我想做一个额外的复选框,但我该怎么做,模型中没有一个对象,而是一个要检查的对象,以便在Controller中创建一个ifelse,如果没有检查,请帮助我,非常感谢,谢谢
我收到这个错误:RuntimeError(自动加载常量Apps时检测到循环依赖当我使用多线程时。下面是我的代码。为什么会这样?我尝试多线程的原因是因为我正在编写一个HTML抓取应用程序。对Nokogiri::HTML(open())的调用是一个同步阻塞调用,需要1秒才能返回,我有100,000多个页面要访问,所以我试图运行多个线程来解决这个问题。有更好的方法吗?classToolsController0)app.website=array.join(',')putsapp.websiteelseapp.website="NONE"endapp.saveapps=Apps.order("
我知道我可以指定某些字段来使用pluck查询数据库。ids=Item.where('due_at但是我想知道,是否有一种方法可以指定我想避免从数据库查询的某些字段。某种反拔?posts=Post.where(published:true).do_not_lookup(:enormous_field) 最佳答案 Model#attribute_names应该返回列/属性数组。您可以排除其中一些并传递给pluck或select方法。像这样:posts=Post.where(published:true).select(Post.attr
我刚刚被困在这个问题上一段时间了。以这个基地为例:moduleTopclassTestendmoduleFooendend稍后,我可以通过这样做在Foo中定义扩展Test的类:moduleTopmoduleFooclassSomeTest但是,如果我尝试通过使用::指定模块来最小化缩进:moduleTop::FooclassFailure这失败了:NameError:uninitializedconstantTop::Foo::Test这是一个错误,还是仅仅是Ruby解析变量名的方式的逻辑结果? 最佳答案 Isthisabug,or
我一直致力于让我们的Rails2.3.8应用程序在JRuby下正确运行。一切正常,直到我启用config.threadsafe!以实现JRuby提供的并发性。这导致lib/中的模块和类不再自动加载。使用config.threadsafe!启用:$rubyscript/runner-eproduction'pSim::Sim200Provisioner'/Users/amchale/.rvm/gems/jruby-1.5.1@web-services/gems/activesupport-2.3.8/lib/active_support/dependencies.rb:105:in`co
我有一个div,它根据表单是否正确提交而改变。我想知道是否可以检查类的特定元素?开始元素看起来像这样。如果输入不正确,添加错误类。 最佳答案 试试这个:browser.div(:id=>"myerrortest").class_name更多信息:http://watir.github.com/watir-webdriver/doc/Watir/HTMLElement.html#class_name-instance_method另一种选择是只查看具有您期望的类的div是否存在browser.div((:id=>"myerrortes
我们目前正在为ROR3.2开发自定义cms引擎。在这个过程中,我们希望成为我们的rails应用程序中的一等公民的几个类类型起源,这意味着它们应该驻留在应用程序的app文件夹下,它是插件。目前我们有以下类型:数据源数据类型查看我在app文件夹下创建了多个目录来保存这些:应用/数据源应用/数据类型应用/View更多类型将随之而来,我有点担心应用程序文件夹被这么多目录污染。因此,我想将它们移动到一个子目录/模块中,该子目录/模块包含cms定义的所有类型。所有类都应位于MyCms命名空间内,目录布局应如下所示:应用程序/my_cms/data_source应用程序/my_cms/data_ty
我遇到了一个非常奇怪的问题,我很难解决。在我看来,我有一个与data-remote="true"和data-method="delete"的链接。当我单击该链接时,我可以看到对我的Rails服务器的DELETE请求。返回的JS代码会更改此链接的属性,其中包括href和data-method。再次单击此链接后,我的服务器收到了对新href的请求,但使用的是旧的data-method,即使我已将其从DELETE到POST(它仍然发送一个DELETE请求)。但是,如果我刷新页面,HTML与"new"HTML相同(随返回的JS发生变化),但它实际上发送了正确的请求类型。这就是这个问题令我困惑的