如何在使用RVM时为Ruby on Rails安装SQlite3

我是编程和Ruby on Rails的新手。 设置我的开发环境一直很糟糕。 我目前的问题是安装Sqlite 3。 当我做 $ bundle install 我明白了 Fetching source index for http://rubygems.org/ Using rake (0.8.7) Using abstract (1.0.0) Using activesupport (3.0.1) Using builder (2.1.2) Using i18n (0.4.2) Using activemodel (3.0.1) Using erubis (2.6.6) Using rack (1.2.1) Using rack-mount (0.6.13) Using rack-test (0.5.7) Using tzinfo (0.3.24) Using actionpack (3.0.1) Using mime-types (1.16) […]

Rails按日期查找笔记

我创建了一个简单的rails应用程序,它有一个人和一个笔记模型。 人们有许多笔记和笔记属于人 该应用程序工作,我能够显示特定人的所有笔记,但我希望能够显示特定日期的单个笔记。 默认情况是今天的日期。 我目前有以下内容: Body: 我已经尝试了几种不同的方法但是没有任何方法可以向我显示今天的日期。 我试图创建一个命名范围,但失败了,并尝试使用: @person.notes.find_by_created_at(Time.now-1.day) 有人能指出我正确的方向吗? 谢谢 汤姆 # 我使用了下面的代码并想出了这个。 我的节目视图看起来像这样。 Notes [“created_at >= ? “, Time.now.beginning_of_day]) do |note| %> Body: 我想我可能在我的视图中使用了错误的语法,或者甚至不应该在视图中使用它? Ť

在rails.vim为什么我得到“E345无法在路径中找到文件”错误?

我一直在用vim学习Ruby / Rails。 蒂姆波普的rails.vim似乎是一个非常好的工具来遍历文件,但我一直得到这些讨厌的“E345无法在路径中找到文件”的错误。 我还不是vim专家,所以解决方案并不明显。 另外,我试过这个并不适用于我的问题。 作为问题的一个例子。 我在app / helpers / application_helper.rb中定义了一个方法format_name,它在app / helpers / messages_helper.rb中使用。 在后一个文件中,我把光标放在format_name的用法上,然后点击gf,我得到了那个错误。 与f和[f]等命令类似的失效 但是,它有时会起作用。 我能够从user gf到app / models / user.rb 想法?

Ruby on Rails – 将JavaScript变量从控制器发送到外部Javascript资产文件

我正在Ruby on Rails中创建一个网站。 我有一个控制器动作,呈现如下视图: def show time_left = Time.now.to_i – 3.hours.to_i @character = current_user.characters.find(params[:id]) respond_to do |format| format.html # show.html.erb format.xml { render :xml => @character } end end 这很好,因为它可以像我一样呈现show.html.erb。 但是我想以某种方式将time_left作为Javascript变量传递给视图,因为这个值被倒计时JQuery插件使用。 我可以在HTML中的页面上放置一个javascript块,然后像这样打印一个实例变量: $(‘#countdown’).countdown(”) 但是我想把我所有的JS保存在一个外部文件中,在页面之外,任何人都可以提供一些关于如何实现它的建议吗?

手动定义getter / setter时如何使用read_attribute(attr_accessor或attr_writers)

我设置了一个search模型,并且要求至少填写一个字段。 我发现了一个有助于validation的问题, Rails:如何要求至少一个字段不为空 。 (我尝试了所有答案,但Voyta似乎是最好的。) validation工作正常,除非我想通过attr_accessor或attr_writer重新定义getter / setter。 (我在表单上有虚拟属性,需要分开validation。)为了弄清问题是什么,我测试了一个常规属性item_length属性。 如果我添加attr_accessor :item_length ,validation将停止工作。 所以,我想问题是如何在不使用点表示法的情况下读取属性的值。 由于validation使用字符串,我无法使用正常的阅读方式。 这是一个片段: if %w(keywords item_length item_length_feet item_length_inches).all?{|attr| read_attribute(attr).blank?} errors.add(:base, “Please fill out at least one field”) end 就像我说的那样,虚拟的attrbutes(length_inches和length_feet)完全不起作用,普通的属性(length)也可以工作,除非我重新定义了getter / setter。

Ruby on rails link_to语法

按照我发现的教程后。 我现在再次重做它,没有脚手架部分,更好地学习它。 但是,编辑我的\ app \ views \ home \ index.html.erb以包含: Rails test project 我收到一个错误: undefined local variable or method `posts_path’ for # 在我这样做之前,我运行了rake db:create ,定义了一个迁移类并运行了rake db:migrate ,一切都没有问题。 所以数据库应该包含一个posts表。 但是link_to命令似乎无法找到posts_path 。 那个变量(或者它甚至是一个函数?)可能是通过脚手架例程定义的。 我现在的问题是; 我如何自己手动完成,定义posts_path ?

覆盖默认访问者时更新属性的麻烦

我正在使用Ruby on Rails 4,我用这种方式覆盖了一些默认的访问器方法: class Article < ActiveRecord::Base def title self.get_title end def content self.get_content end end self.get_title和self.get_content方法返回一些计算值,如下所示(注意: has_one_association是a :has_one ActiveRecord::Association ) def get_title self.has_one_association.title.presence || read_attribute(:title) end def get_content self.has_one_association.content.presence || read_attribute(:content) end 当我从数据库中找到并读取@article实例时,所有实例都按预期工作: title和content值分别使用self.has_one_association.title和self.has_one_association.content输出。 但是,我发现当属性分配给@article ,@ @article对象不会按预期更新。 也就是说,在我的控制器中,我有: def update # params # => {:article => {:title => “New title”, :content => “New […]

伪造Ruby中的类型转换?

鉴于以下Ruby代码,并且鉴于我有一个Klass实例,如何在Klass实例上调用do_stuff方法。 我想将我的Klass实例转换为Subklass。 我理解类型转换这在Ruby中是不可能的 – 有没有办法伪造它? class Klass … end class Subklass < Klass … def do_stuff … end end inst = Klass.new inst.magically_convert_to_subklass_instance # Need help here inst.do_stuff

Rails使用javascripting嵌套多态forms

我希望我的表格上有以下内容: 度是多态的部分,与profile的has_many关系。 这个部分由主要forms – 轮廓调用。 通过按“添加资格”,用户可以添加多个度数。 我已经能够只将一个学位附加到个人资料中,这是最后一个被忽略的人。 我甚至知道它为什么会发生,因为link_to无法传递配置文件实例。 所以我必须在degrees_controller中创建新的配置文件,你可以在我的代码中看到 。 提交“创建个人资料”时,最终个人资料实例是否可以选择上述所有其他个 请任何帮助,以便我可以将所有学位与表格相关联,我最后几天坚持使用SO和谷歌的所有排列和组合。 我已经准备好改变代码了……任何对此的帮助都将受到赞赏。

为什么bash -l -c“CMD”让ruby找到我的gem?

在我的ruby脚本中,我需要gmail gem: require ‘rubygems’ require ‘gmail’ 在shell中运行时,它可以正常工作: ruby my-script.rb 当我把它放在一个cron作业时,它无法执行: * * * * * cd /to/script/directory;/usr/local/rvm/rubies/ree-1.8.7-2011.03/bin/ruby ./my-script.rb 日志显示无法加载gmail gem: /usr/local/rvm/rubies/ree-1.8.7-2011.03/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:36:in `gem_original_require’: no such file to load — gmail (LoadError) 好吧,当我这样做时(把cmd放在bash -l -c’CMD’中): * * * * * /bin/bash -l -c ‘cd /to/script/directory;/usr/local/rvm/rubies/ree-1.8.7-2011.03/bin/ruby ./my-script.rb’ 它再次正常工作。 为什么? ps.I知道arg -l使bash成为登录shell,但这有什么不同吗?