如何在Ruby中的Array类中对数组的每个元素进行平方?

我的部分代码如下: class Array def square! self.map {|num| num ** 2} self end end 我打电话的时候: [1,2,3].square! 我希望得到[1,4,9],但我得到[1,2,3]。 为什么会这样? 我打电话的时候: [1,2,3].map {|num| num ** 2} 在课堂方法之外,我得到了正确的答案。

使用{:locale => ,:formats => 缺少模板布局/邮件程序,

我正在关注michael harlt rails教程,但是我收到了这个错误 缺少模板布局/邮件使用{:locale => [:en],:formats => [:html],:variants => [],:handlers => [:raw,:erb,:html,:builder,:ruby,:咖啡,:jbuilder]}。 搜索:*“/ home / ubuntu / workspace / app / views” 预览帐户激活时 这是我的user_mailer.rb class UserMailer < ApplicationMailer def account_activation(user) @user = user mail to: user.email, subject: "Account activation" end def password_reset @greeting = "Hi" mail to: "to@example.org" end end 并且错误突出显示的行 mail to: user.email, subject: […]

访问由键数组指定的嵌套哈希元素

我试图获得一个通用的解决方案来解决在给定一组键值的情况下访问嵌套哈希中的元素的问题,例如: hash = { “a” => { “b” => ‘foo’ }} array = [“a”, “b”] function(array) => “foo” 我猜这可能是一个单行。 它也与这个问题密切相关: Ruby将数组转换为嵌套哈希

Rails I18n翻译范围

编写完全翻译的应用程序可能会变得乏味。 有没有办法为当前上下文设置默认转换范围? 示例:我正在我的ProjectsController的show.html.erb操作中写入部分_deadlines.html.erb 现在,因为我想成为一名优秀的程序员,所以我的所有翻译都是如此。 我想生成以下树 projects: deadlines: now: “Hurry the deadline is today !” …. 我怎样才能比每次写完整个范围时更省力? 项目/ show.html.erb … … 从show.html.erb调用的projects / _deadlines.html.erb Deadline : 有没有办法为当前上下文设置默认范围(这里是整个_deadlines.html.erb文件)? 编辑 有些人建议使用Rails Lazy查找 ,但这不会产生我正在寻找的范围。 在我的情况下,我想跳过action默认范围(显示,索引等…)并为我正在呈现的当前部分添加范围(在我的情况下为_deadlines.html.erb) Rails懒惰查找: t(‘.now’) t(:now, scope: [:projects, :show] 但我想: t(‘.now’) t(:now, scope: [:projects, :deadlines]

使用authlogic rails插件在数据库中预填充管理员用户

我一直在使用Authlogic rails插件。 我真正使用的是拥有一个可以编辑网站的管理员用户。 它不是人们注册帐户的网站。 我将最终使创建用户方法受到已登录用户的限制,但当然,当我清除数据库时我无法创建用户,因此我必须以某种方式预先填充它。 我试图进行迁移以放置我创建的用户的转储,但这不起作用,看起来非常h​​acky。 处理这个问题的最佳方法是什么? 这很棘手,因为密码被散列,所以我觉得我必须创建一个然后拉出哈希条目…

如何初始化’attr_accessor’属性值?

可能重复: attr_accessor默认值 我正在使用Ruby on Rails 3.0.9,我想在我的class \ model中初始化一些inheritance自ActiveRecord::Base attr_accessor属性值。 那是, …在我的模块中我有: class User < ActiveRecord::Base attr_accessor :attribute_name1, :attribute_name2, :attribute_name3, … end 我想将所有attr_accessor属性值设置为true 。 我怎样才能做到这一点? PS:当然我想解决上述问题,接近“Ruby on Rails Way”。 我知道after_initialize回调但是通过使用该方法我应该重复每个attribute_name语句,我想在after_initialize语句中将值设置为true (…这不是 DRY – 不要重复自己)。 也许有更好的方法来实现这一目标。 当您声明这些属性时,有没有办法“动态”设置attr_accessor属性值? 也就是说,我希望立刻声明并设置attr_accessor属性!

使用Rest Client Ruby Gem的身份validation标头

我已经创建了一个基本的身份validation密钥,现在我只是想利用它。 我尝试了一些不同的变体,但似乎都没有在请求标头中显示授权。 $auth = ‘Basic cmFtZXNoQHVzYW1hLmNvbTpyYW1lc2h1JEBtcA==’ @response = resource.post(‘Authorization’ => $auth) nor @response = resource.post(:authorization => $auth) nor @response = resource.post(:Authorization => $auth) nor @response = resource.post(:content_type => :json, :accept => :json, :headers => { ‘Authorization:’ => $auth }) 不幸的是,我没有在rdoc中找到很多可以帮助我解决这个问题的信息。 有没有人有使用Rest Client gem添加auth标头的经验?

没有root安装Jekyll

我想在共享服务器上设置一个jekyll博客。 当我尝试安装Jekyll时,我得到“你没有写权限”。 如何在没有root或sudo的情况下修复此问题? 更多详情: 我在共享服务器上有空间,没有root访问权限。 虽然托管公司根据我的要求安装了Ruby,但我无法安装Ruby。 当我尝试安装Jekyll时,我使用 user@hosting.org [~]# gem install jekyll 这是我得到的回应: ERROR: While executing gem … (Gem::FilePermissionError) You don’t have write permissions into the /usr/lib/ruby/gems/1.8 directory. 我已经看到了改变我试过的GEMPATH的不同建议 export GEM_PATH=/home/user/something 但即便这样做了 gem env 仍然导致 GEM PATHS: – /usr/lib/ruby/gems/1.8 – /home/user/.gem/ruby/1.8 有小费吗? 是否可以在没有root或sudo priviliges的情况下安装jekyll,或者我只是制作了一些新手PATH错误?

有没有办法在用户安装Ruby gem后打印消息?

有没有办法配置gem的gemspec来在有人下载并使用gem install gem之后立即打印重要的信息性消息?

如何使用instance_variable_set正确设置实例变量?

我正在查看instance_variable_set的文档,并看到给出的示例代码执行此操作: obj.instance_variable_set(:@instnc_var, “value for the instance variable”) 然后允许您在任何类的实例方法中以@instnc_var访问变量。 我想知道为什么需要冒号:在@instnc_var之前。 结肠做什么?