【问题标题】:Assets loaded but not applied in rails 4已加载但未在 rails 4 中应用的资产
【发布时间】:2015-12-03 14:33:54
【问题描述】:

我刚刚创建了一个测试项目并正在阅读有关资产管道的信息。到目前为止,资产正在加载但未应用,好像我转到localhost:3000/assets/application.css 我看到了我编写的样式但我没有看到应用于DOM的规则。

Rails 版本:4.2.1 Ruby 版本:2.2.0

结构如下:

app
--- assets
------ images
------ javascripts
------ stylesheets
------------ application.css
------------ todos.css

application.css的内容如下:

/*
*= require_tree .
*= require_self
*/

application.js的内容如下:

//= require jquery
//= require jquery_ujs
//= require turbolinks
//= require_tree .

rails APP 非常简单,因为它只是一个模型(todo.rb),该模型的控制器(todos_controller.rb)具有以下内容:

class TodosController < ActionController::Base
  def index
    @todos = Todo.all
  end
end

非常简单,对于视图,我使用具有以下层次结构的 Slim 模板:

app
--- views
------ todos
--------- index.slim

application.html.erb的内容如下:

<!DOCTYPE html>
<html>
<head>
  <title>Test</title>
  <%= stylesheet_link_tag    'application', media: 'all', 'data-turbolinks-track' => true %>
  <%= javascript_include_tag 'application', 'data-turbolinks-track' => true %>
  <%= csrf_meta_tags %>
</head>
<body>

<%= yield %>

</body>
</html>

对于视图:

.todos
  - @todos.each do |todo|
    .title = todo.title
    .content = todo.content

我缺少资产管道吗?提前致谢。

【问题讨论】:

    标签: css ruby-on-rails ruby-on-rails-4 asset-pipeline slim-lang


    【解决方案1】:

    index.slim 重命名为index.html.slim

    附:约定优于配置

    【讨论】:

    • 如果没有帮助,请运行“rake routes” - 并告诉我们结果
    • 如果对你有帮助,请告诉我
    • 恐怕没用。这是rake routesi.imgur.com/75JSZ5a.png的转储
    • 当您将“index.slim”重命名为“index.html.slim”时,您是否更改了语法?
    • 是的,因为视图被正确渲染,模型上的 CRUD 操作完美运行,唯一的问题似乎是资产
    【解决方案2】:

    TodosController 必须继承自 ApplicationController,而不是 ActionController::Base

    class TodosController < ApplicationController
      def index
        @todos = Todo.all
      end
    end
    

    【讨论】:

      猜你喜欢
      • 2013-09-13
      • 1970-01-01
      • 2013-03-14
      • 2014-09-12
      • 2015-05-27
      • 2018-12-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多