Rails:无法访问lib目录中的模块

我想创建一个通用的字符串操作类,可以在我的Rails应用程序中的模型,视图和控制器中使用。 现在,我正在尝试将一个模块放在我的lib目录中,而我只是想在rails控制台中访问该函数来测试它。 我从类似的问题中尝试了很多技巧,但我无法让它发挥作用。 在我的lib / filenames.rb文件中: module Filenames def sanitize_filename(filename) # Replace any non-letter or non-number character with a space filename.gsub!(/[^A-Za-z0-9]+/, ‘ ‘) #remove spaces from beginning and end filename.strip! #replaces spaces with hyphens filename.gsub!(/\ +/, ‘-‘) end module_function :sanitize_filename end 当我尝试调用sanitize_filename(“some string”)时,我得到一个no方法错误。 当我尝试调用Filenames.sanitize_filename(“some string”)时,我得到一个未经过限制的常量错误。 当我尝试包含’/ lib / filenames’时,我收到一个加载错误。 这是创建我可以在任何地方访问的方法的最常规方法吗? 我应该创建一个类吗? 我怎样才能让它运作起来? 🙂 谢谢!

如何在视图Ruby on Rails中路由您的子文件夹?

任何人都可以说明如何路由您的子文件夹的.html.erb文件? 它是这样放置的: view/pages/en/index.html.erb 并且路由这我正在做route.rb上的事情 match ‘:lang/index’, :to => ‘pages/en#index’ 对于链接代码,我在标题上有这个 我得到的错误是 Routing Error uninitialized constant Pages 路线:

被一个简单的正则表达困扰

我试图看看字符串s包含正则表达式中的任何符号。 下面的正则表达式在rubular上运行正常 。 s = “asd#d” s =~ /[~!@#$%^&*()]+/ 但是在Ruby 1.9.2中,它给出了以下错误消息: syntax error, unexpected ‘]’, expecting tCOLON2 or ‘[‘ or ‘.’ s = “asd#d”; s =~ /[~!@#$%^&*()]/ 怎么了?

确定方法在rails中所属的类

Ap::Application.routes.draw do resources :accounts end 我想知道“resources”方法所属的类或模块。 如果我在http://apidock.com/rails/中搜索“资源”方法(在提供的搜索文本框中),则会出现一个类列表,其中包含方法名称“resources”。 困惑,知道方法的起源。 他们可以使用任何命令来看看原点。 这个问题有点初学者的水平。 谢谢

Rails模型在子文件夹和关系中

我在我自动加载的文件夹中组织了一些我的rails模型 config.autoload_paths += Dir[Rails.root.join(‘app’, ‘models’, ‘{**}’)] 我可以直接使用所有模型(例如Image.first.file_name ),但是当我尝试通过关系访问它们时,例如@housing.images.each do… with has_many: images我得到以下错误 Unable to autoload constant Housing::HousingImage, expected /path/app/models/housing/image.rb to define it 如何让rails使用我的模型进行关系方法? 我正在运行ruby 2.2和rails 4.2

Ruby和为Float实例修改self

我想改变float实例的自身值。 我有以下方法: class Float def round_by(precision) (self * 10 ** precision).round.to_f / 10 ** precision end end 我想添加round_by! 将修改自我值的方法。 class Float def round_by!(precision) self = self.round_by(precision) end end 但我得到一个错误,说我无法改变自我的价值。 任何的想法 ?

Ruby:在每个之间选择,map,inject,each_with_index和each_with_object

当我多年前开始编写Ruby时,我花了一些时间来理解每个和地图之间的区别。 当我发现所有其他Enumerable和Array方法时,情况会变得更糟。 在官方文档和许多 StackOverflow 问题的帮助下,我慢慢开始了解这些方法的作用。 以下是让我更长时间理解的内容: 我为什么要使用一种方法? 有没有指导方针? 我希望这个问题不是重复的:我对“为什么?”更感兴趣。 比“什么?” 或“如何?”,我认为它可以帮助Ruby新人。

Rails:CSRF令牌无法正常工作但设置正常

我在heroku上有我的rails 3应用程序,当我发送银行信息时,我得到: WARNING: Can’t verify CSRF token authenticity但我的CSRF令牌已设置。 https://gist.github.com/anonymous/7081401 $.ajax({ url: ‘#{credit_cards_path}’, type: ‘POST’, beforeSend: function(xhr) {xhr.setRequestHeader(‘X-CSRF-Token’, ‘#{form_authenticity_token}’)}, dataType: “json”, data: { cc_uri: response.data.uri, address: $(‘.address’).val() // etc … }, success: function(randomobject) { window.location = ‘/products/’ + randomobject.value + ‘/receipt’; } }); heroku日志 829962+00:00 app[web.1]: Started POST “/products/2/card” for 100.2.109.97 at 2013-10-21 09:13:03 +0000 835379+00:00 […]

在RSpec自动化测试期间使Sprockets缓存无效

在我的Rails应用程序中,我有一个.js.erb文件,它有一个变量,可以根据一些Ruby代码动态设置。 var myTimer = ; 该应用程序工作正常,但我在一些自动化测试中遇到问题。 在使用此JavaScript的RSpecfunction测试中会出现此问题。 我的spec文件有许多测试可以动态更改ruby MyApp.config.timeout_time时间来测试不同的场景。 在我的spec文件中,第一个示例通过,其余示例失败。 我终于意识到这种情况正在发生,因为myTimer永远不会在JavaScript方面得到更新。 当第一个测试运行时,JavaScript将使用当前在Ruby中设置的值进行编译。 当我为第二次测试更改Ruby计时器时,RSpec仍在使用JavaScript中的先前值。 有没有办法告诉Sprockets / Rails使文件或缓存的一部分无效,以便重建JavaScript? 我一般不想关闭缓存,我只需要一种方法在需要时基于每个测试使application.js无效。 我可能能够“触摸”文件系统上的一个JavaScript文件,使sprockets认为文件已被更改,但我真的不想这样做。

为什么在Ruby中,|| 当`a`未定义时,1会抛出错误,但a = a || 1会不会?

当a未定义时,则为a || 1 a || 1将抛出错误,但a = a || 1 a = a || 1不会。 是不是有点不一致? irb(main):001:0> a NameError: undefined local variable or method ‘a’ for main:Object from (irb):1 from c:/ruby/bin/irb:12:in ” irb(main):002:0> a || 1 NameError: undefined local variable or method ‘a’ for main:Object from (irb):2 from c:/ruby/bin/irb:12:in ” irb(main):003:0> a = a || […]