小编Ask*_*ker的帖子

Sprockets文件未找到例外

我正在为Rails尝试一些示例应用程序.我创建了一些控制器和页面.但是当我尝试访问其中一个时,我在网页上得到一个例外:


Sprockets::FileNotFound in Pages#home
Showing c:/railscode/test_app/app/views/layouts/application.html.erb
where line #6 raised:

couldn't find file 'jquery'
  (in c:/railscode/test_app/app/assets/javascripts/application.js:7)
Extracted source (around line #6):

    3: <head> 
    4:   <title>TestApp</title> 
    5:   <%= stylesheet_link_tag    "application" %> 
    6:   <%= javascript_include_tag "application" %> 
    7:   <%= csrf_meta_tags %> 8: </head> 9: <body>

Rails.root:`c:/railscode/test_app`
Run Code Online (Sandbox Code Playgroud)

我使用命令创建了一些控制器:

$ rails generate controller Pages home contact

  create  app/controllers/pages_controller.rb
   route  get "pages/contact"
   route  get "pages/home"
  invoke  erb
  create    app/views/pages
  create    app/views/pages/home.html.erb
  create    app/views/pages/contact.html.erb
  invoke  rspec
  create    spec/controllers/pages_controller_spec.rb
  create    spec/views/pages
  create    spec/views/pages/home.html.erb_spec.rb
  create    spec/views/pages/contact.html.erb_spec.rb
  invoke  helper …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails sprockets

15
推荐指数
3
解决办法
2万
查看次数

最佳原则原则

我似乎遇到了很多设计问题,我从来不知道什么是真正合适的.一方面,我经常听到我应该限制耦合并坚持单一责任,但是当我这样做时,我经常发现在需要时很难将信息提供给程序的一部分.例如,

class Singer
  def initialize(name)
    @name = name
  end
  attr :name
end
Run Code Online (Sandbox Code Playgroud)

宋应该是:

class Song
  def new(singer)
    @singer = singer
  end
end
Run Code Online (Sandbox Code Playgroud)

要么

class Song
  def new(singer_name)
    @singer_name = singer_name
  end
end
Run Code Online (Sandbox Code Playgroud)

后者的耦合较少,所以根据原则我应该使用它.但如果我后来发现宋某需要了解更多有关歌手的事情,那我就是一个糟糕的方式.例如

 class Song
   ...
   def play
     puts "Belting it out by #{@singer.name}, winner of
     #{@singer.grammy_count} grammies!"
   end
 end
Run Code Online (Sandbox Code Playgroud)

如果我使用了后来的Song类而不是前者,我会解决这个问题.但后来我怀疑有人会提醒我SRP,单一责任原则,并建议:

  class SongPlayer
    def initialize(singer, song)
      @singer, @song = singer, song
    end
    def play
      puts "Belting it out by #{@singer.name}, winner of
      #{@singer.grammy_count} grammies!"
    end
  end
Run Code Online (Sandbox Code Playgroud)

是的,我想这是有道理的,因为另一个歌手可能会掩盖别人的歌,对吗?但那么,它真的会是完全相同的歌吗?在我的大多数情况下,它永远不会是相同的"歌曲"所以我从来没有这种情况.那么SRP值得为代码带来额外的类吗?

我有时认为许多OOP原则(SOLID或其他原因)都会产生Java的局限性,并且不适用于Ruby.

ruby oop

5
推荐指数
1
解决办法
252
查看次数

Ruby不可能进行高速排序吗?

我研究了这本尖锐的指南,它确实帮助我快速掌握了这门语言.之后,我开始使用Ruby解决一些编码难题.它很有助于习惯我所感受的语言.

我遇到了一个这样的谜题.我很容易解决它,因为它非常直接,但解决方案被主机网站拒绝,错误是"时间超过"!我知道Ruby无法与C/C++的速度竞争,但它必须能够在一个接受Ruby解决方案的网站上回答一个小小的难题吗?

这个谜题只是一种正常的方式.

这是我的解决方案

array ||= []
gets.to_i.times do
  array << gets
end
puts array.sort
Run Code Online (Sandbox Code Playgroud)

我的问题是,有没有其他方法可以用Ruby实现高速排序?我在Array#sort这里使用的是基本的,但有没有办法更快地完成它,即使它意味着更多的代码行?

ruby

5
推荐指数
1
解决办法
347
查看次数

标签 统计

ruby ×2

oop ×1

ruby-on-rails ×1

sprockets ×1