【问题标题】:Rails: Can't include scss in rails 4.1.1. - TypeError: Object doesn't support this property or methodRails:不能在 rails 4.1.1 中包含 scss。 - TypeError:对象不支持此属性或方法
【发布时间】:2014-10-24 10:59:22
【问题描述】:

编辑:解决方案是将 sass-rails gem 锁定到 4.0.2 版本。


今天下午我遇到了一个奇怪的问题。 我试图实现一个引导主题(详细信息管理员),但是当包含在 application.css.scss 中时出现错误:

TypeError: Object doesn't support this property or method
  (in C:/sites/busapp/app/assets/stylesheets/application.css.scss)

我尝试将我的文件的扩展名更改为仅 .css 或仅 .scss,但没有成功。我现在正在尝试 2 小时 30 分钟,所以我变得绝望并询问其他人是否知道如何解决这个问题。

OS: Windows 8.1 64bit
Ruby 1.9.3p545
Rails 4-1.1

我的宝石文件:

来源'https://rubygems.org'

# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
gem 'rails', '4.1.1'
# Use sqlite3 as the database for Active Record
gem 'sqlite3'
# Use SCSS for stylesheets
gem 'sass-rails'
# Use Uglifier as compressor for JavaScript assets
gem 'uglifier', '>= 1.3.0'
# Use CoffeeScript for .js.coffee assets and views
gem 'coffee-rails', '~> 4.0.0'
# See https://github.com/sstephenson/execjs#readme for more supported runtimes
# gem 'therubyracer',  platforms: :ruby

# Use jquery as the JavaScript library
gem 'jquery-rails'
# Turbolinks makes following links in your web application faster. Read more: https://github.com/rails/turbolinks
gem 'jquery-turbolinks'
gem 'turbolinks'
# Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder
gem 'jbuilder', '~> 2.0'
# bundle exec rake doc:rails generates the API under doc/api.
gem 'sdoc', '~> 0.4.0',          group: :doc

# Use ActiveModel has_secure_password
# gem 'bcrypt', '~> 3.1.7'

# Use unicorn as the app server
# gem 'unicorn'

# Use Capistrano for deployment
# gem 'capistrano-rails', group: :development

# Use debugger
# gem 'debugger', group: [:development, :test]

# Windows does not include zoneinfo files, so bundle the tzinfo-data gem
gem 'tzinfo-data', platforms: [:mingw, :mswin]

#====Custom gems====
group :development do
  gem 'better_errors'
  gem 'pry-rails'
  gem 'rails_debug'
  # gem 'quiet_assets'
  gem 'letter_opener'
end

#Database
gem 'pg'
#Slim
gem 'slim'
gem 'slim-rails'
#Bootstrap
gem 'bootstrap-sass'
gem 'autoprefixer-rails'
#Authentication
gem 'devise'
#Other
gem 'simple_form', '~> 3.1.0.rc1'

# gem 'will_paginate-bootstrap'
# gem 'enumerations'
# gem 'will_paginate-bootstrap'
# gem 'acts_as_simple_translatable'
# gem 'paperclip', '~> 4.1'
# gem 'active_model_serializers'
# gem 'font-awesome-sass'
# gem 'apipie-rails'
# gem 'cancancan', '~> 1.9'
# gem 'redcarpet', '~> 3.1.2'
# gem 'bazaar', '0.0.2'
# gem 'memoist', '0.9.1'

Application.css.scss

@import "bootstrap-sprockets";
@import "bootstrap";
@import "neki";

application.html.slim

 doctype html
html
  head
    title Busapp
    = stylesheet_link_tag    'application', media: 'all', 'data-turbolinks-track' => true
    = javascript_include_tag 'application', 'data-turbolinks-track' => true
    = csrf_meta_tags
  body
    = link_to destroy_user_session_path, method: :delete, class: "btn"
      | Logout
    = render "layouts/flash"
    = yield

此外,当我从 application.css.scss 中仅删除最后一个文件时,我没有收到错误消息。这不是因为文件损坏,因为我尝试了多个文件,而在这个文件中,只有主体背景颜色设置为红色。

另一件可能相关的事情是当我运行捆绑更新时会发生什么:http://prntscr.com/4i0xfl

编辑:即使我尝试将这样的内容直接添加到我的 .css.scss 中,它仍然会中断。

body {background-color: red;}

【问题讨论】:

  • 更改 gem 文件版本似乎对我不起作用。

标签: ruby-on-rails ruby ruby-on-rails-4 sass


【解决方案1】:

不确定,但会用可能已经尝试过的各种建议来更新以前的错误答案:

1) 发现了这个类似的问题:github.com/activeadmin/activeadmin/issues/3093 解决方案是更新一些宝石

2) 根据提供的屏幕截图输出发现:github.com/sstephenson/sprockets/issues/540 解决方案是预编译资产(即引导程序).. 看起来这是一个 sprocket 错误。

3) 对于 Railties 依赖错误,SO 上的各种方法:stackoverflow.com/questions/17327953/rails-4-0-0-bundler-could-not-find-compatible-versions-for-gem-railties

【讨论】:

  • 对不起,我不明白你的意思。这是我的文件结构:prntscr.com/4i1ov9 我尝试添加到我的 application.css.scss 中,但没有一个选项起作用:-@import "neki.css.scss";或 -@import "neki.css";或 -@import "neki.scss";或与前面的样式表路径相同:例如:-@import "stlesheets/neki.css.scss";俄亥俄州我没有 - 在前面这样做,只是为了避免提及用户
  • 没关系,也许我也误解了这个问题-您是否从 application.css.scss 中的新主题中添加了一些内容,并且它以前与您的设置一起使用,或者是新添加的 application.css.scss ?您目前如何/在哪里包含/导入此文件?
  • 首先,感谢您帮助我。首先我只有 -@import "bootstrap-sprockets"; -@import "引导程序";后来当我尝试将任何其他 .css.scss 导入到 application.css.scss 时,它会中断。
  • 好的,现在我明白了,如果可行,将删除或调整答案-您是否已经检查过类似的问题..? github.com/activeadmin/activeadmin/issues/3093(在本页底部一些 gem 安装更新建议);不知道这是否适合你,也许你已经尝试过了..
  • 第二个猜测.. github.com/sstephenson/sprockets/issues/540 解决方案是预编译资产(即引导程序).. 看起来这是一个 sprocket 错误。
【解决方案2】:

看起来你已经解决了这个问题,但是我昨天遇到了这个问题并找到了一个不错的解决方案(解决方法?),所以我想分享它。

我在 Windows 7 上运行 Rails 4.1.1。

使用 bootstrap-sass gem 会出现 ExecJS 运行时错误,但不会使用 twitter-bootstrap gem(无预处理器)。

快速的两步解决方法。

  1. 重命名 application.css.scss --> application.css
  2. 创建一个新文件 custom.css.scss 来保存之前在 application.css.scss 中的代码

问题解决了!

来源: https://www.railstutorial.org/book/filling_in_the_layout#sec-custom_css

【讨论】:

  • 使用 require_tree 不是很好的风格,因为你应该明确地导入它们。这要求 application.css 是 scss。但是,新 sprockets 现在希望将所有 .css.scss 文件命名为 .scss。 require self 也不是很好的风格。
猜你喜欢
  • 2015-05-07
  • 2015-04-03
  • 2015-07-02
  • 1970-01-01
  • 2013-10-05
  • 1970-01-01
  • 2019-12-13
相关资源
最近更新 更多