小编Abi*_*bid的帖子

Ruby从范围创建一个特定的数组

我想知道如何使用ruby中的范围生成以下数组

["00","00","01","01","02", "02", ...... "10", "10"]
Run Code Online (Sandbox Code Playgroud)

我想重复每个元素两次,这就是我正在寻找答案的部分.我可以生成如下单个元素

("00".."10").to_a
Run Code Online (Sandbox Code Playgroud)

我知道我可以使用循环等来做到这一点,但我正在寻找一个更简单的一行代码

谢谢

ruby

6
推荐指数
2
解决办法
4052
查看次数

设计 - 为多个用户单一登录表单

我有两个Devise模型,User和Business; 我希望两者都能够使用单一登录形式登录.我正在使用骨干js,我有一个自定义的视图,所以视图不是一个问题.ajax请求用于登录,它按预期适用于用户,但不适用于企业.

我搜索过谷歌,并提到了一些提到使用STI来解决这个问题的解决方案,但是项目已经完成,我现在无法做出这样的改变.我正在考虑重写Devise会话控制器和:

  1. 检查给定的电子邮件地址是否为用户,然后使用Warden对用户进行身份验证.
  2. 如果未找到具有该电子邮件的用户,则使用Warden对Business模型进行身份验证.

我无法弄清楚如何更改代码来实现上述目标,我不知道warden如何工作以及我需要调整哪些params来实现上述功能,需要调用哪些函数.任何人都可以指出我正确的方向或提供一个例子,说明我应该如何向前推进.

谢谢.

ruby-on-rails devise warden ruby-on-rails-3

5
推荐指数
3
解决办法
3996
查看次数

使用nested_form gem的undefined方法`values_at'

我收到了错误

ActionView::Template::Error (undefined method `values_at' for nil:NilClass):
Run Code Online (Sandbox Code Playgroud)

当使用nested_form gem时

这是我的代码

楷模

class Poll < ActiveRecord::Base

  attr_accessible :question, :poll_answers_attributes
  has_many  :poll_answers
  accepts_nested_attributes_for :poll_answers
end

class PollAnswer < ActiveRecord::Base
  belongs_to  :poll
  attr_accessible :answer
end
Run Code Online (Sandbox Code Playgroud)

视图

 =nested_form_for [:admin, @poll], mutipart: true, class: "form-horizontal" do |f|
    .span6
      .control-group
        =f.label :question, class: "control-label"
        .controls
          =f.text_field :question, rows: "5", class: "span5"
      = f.link_to_add "Add a Answer", :poll_answers
      =f.submit "Create Post", class: "btn btn-primary"
Run Code Online (Sandbox Code Playgroud)

堆栈跟踪

/home/abid/.bundler/ruby/1.9.1/nested_form-6232dd853c27/lib/nested_form/builder_mixin.rb:41:in `block in link_to_add'
/home/abid/.bundler/ruby/1.9.1/nested_form-6232dd853c27/lib/nested_form/view_helper.rb:53:in `call'
/home/abid/.bundler/ruby/1.9.1/nested_form-6232dd853c27/lib/nested_form/view_helper.rb:53:in `after_nested_form_callbacks'
/home/abid/.bundler/ruby/1.9.1/nested_form-6232dd853c27/lib/nested_form/view_helper.rb:8:in `block in nested_form_for' …
Run Code Online (Sandbox Code Playgroud)

forms ruby-on-rails nested-forms ruby-on-rails-3

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

猜猜给定随机三元组的字符串

给定一个未知字符串,执行一个名为的实用程序函数

string returnRandomTripletFromString(string)
Run Code Online (Sandbox Code Playgroud)

该函数从未知字符串返回一个随机三元组,您还可以获得该字符串的长度

效用函数返回的随机三元组将保持字符串中字母的相对顺序,

让我们说这个字符串是它将返回的helloworld

'hel','wod','lor'

但它永远不会回来

'LHD'

因为h在字符串中的l之前

如何使用此实用程序函数猜测字符串,使用最少的函数调用.

algorithm

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

Rails ActiveRecord CounterCache和Callbacks

counter_cache是​​否递增和递减激活active_record回调?

User << AR

  has_many :cups

  after_update :do_something

  def do_something
     "Will I be called when number of cups updated ?"
  end

end

Cup << AR

   belongs_to :user, counter_cache: true

end
Run Code Online (Sandbox Code Playgroud)

在上面的代码中,当添加一个新杯并且它属于一个用户时,将调用函数do_something,将在该用户上调用update来更新cups_count,但是从我试过的看起来似乎是counter_cache更新没有火回调,可能是因为他们自己内部回调?

谢谢

activerecord ruby-on-rails counter-cache ruby-on-rails-3

4
推荐指数
1
解决办法
1045
查看次数

jQuery用不同的绑定

我想将一个函数绑定到一个事件,但我想更改调用该函数的上下文

function Foo(){

  t : "123",
  bar: function(){
    // I am here
    $('#selector').bind('click' this.foo);
  }
  ,
  foo: function(){
    //I want when to be able to use the current object here by this
    //this.t should be 123 and this.bar should call the above function
  }
}
Run Code Online (Sandbox Code Playgroud)

javascript jquery

3
推荐指数
1
解决办法
196
查看次数

使用资产管道Rails 3.2时从公用文件夹提供图像

我正在使用Rails 3.2资产管道来提供我的资产(图片,javascript .css).

我已经为照片上传添加了回形针.默认情况下回形针存储文件public/system

当我使用url回形针生成的东西时

/system/users/avatar/000/000/thumb/whatever.jpg
Run Code Online (Sandbox Code Playgroud)

它没有给我任何路线错误.该文件在上述位置,但我认为它可能与资产pipleline有关.

什么想法可能会出错?

paperclip ruby-on-rails-3 asset-pipeline

3
推荐指数
1
解决办法
5999
查看次数

Rails模型验证条件allow_nil?

所以我想知道我们是否可以在rails模型上使用条件allow_nil选项进行验证.

我想做的是能够根据一些逻辑(一些其他属性)allow_nil

所以我有一个产品型号可以保存为草稿.当被保存为草案时,价格可以是零,但是当不是草稿时,保存价格应该是数字.我该怎么做到这一点.以下似乎不起作用.它适用于草案,但即使状态不是草案也允许为零.

class Product<ActiveRecord::Base
   attr_accessible :status, price
   validates_numericality_of :price, allow_nil: :draft?

   def draft?
     self.status == "draft"
   end

end
Run Code Online (Sandbox Code Playgroud)

看看rails docs我看起来没有选项将方法传递给allow_nil?

一种可能的解决方案是对两种情况进行单独的验证

 with_options :unless => :draft? do |normal|
    normal.validates_numericality_of :price
 end

 with_options :if => :draft? do |draft|
   draft.validates_numericality_of :price, allow_nil: true
 end
Run Code Online (Sandbox Code Playgroud)

有什么其他方法让这个工作?

谢谢

validation activerecord ruby-on-rails ruby-on-rails-3

3
推荐指数
1
解决办法
2419
查看次数

使用正则表达式将字符添加到JavaScript中每一行的开头

如何使用replace函数使用正则表达式将单个字符添加到JavaScript中的每一行?

javascript regex replace

3
推荐指数
1
解决办法
2269
查看次数

Rails 3 Mailer和延迟工作&Heroku

我收到此错误
ArgumentError(信息需要name_or_domain):我正在使用delayed_job hirefire和heroku.以下是我的代码中的行

Notifier.delay.notify(self.artist, commented_on_artist, self.project, self.work_id)
Run Code Online (Sandbox Code Playgroud)

当我使用以下代码时,一切都很完美

Notifier.delay(self.artist, commented_on_artist, self.project, self.work_id).deliver
Run Code Online (Sandbox Code Playgroud)

错误来自heroku gem中的Client.rb来自此函数#在应用程序上显示模式,自定义域和协作者等信息.

def info(name_or_domain)
    raise ArgumentError.new("name_or_domain is required for info") unless name_or_domain
    name_or_domain = name_or_domain.gsub(/^(http:\/\/)?(www\.)?/, '')
    doc = xml(get("/apps/#{name_or_domain}").to_s)
    attrs = hash_from_xml_doc(doc)[:app]
    attrs.merge!(:collaborators => list_collaborators(attrs[:name]))
    attrs.merge!(:addons        => installed_addons(attrs[:name]))
end
Run Code Online (Sandbox Code Playgroud)

我只是尝试了一些事情,并意识到问题不在于delayed_job它与雇佣火力,如果我删除雇佣宝石工作排队,我手动运行工人所有工作就像一个魅力.我无法获得雇佣工作.

heroku delayed-job

2
推荐指数
1
解决办法
739
查看次数

与验证的多态关联[甚至可能??]

我想知道我是否可以拥有多态关联和存在验证

假设我有一个business模型和一个address模型,并且address是多态的

class Business< ActiveRecord::Base
  has_one :address, as: :addressable
  validates_presence_of :address
end

class Address< ActiveRecord::Base
  belongs_to :addressable, polymorphic: true
end
Run Code Online (Sandbox Code Playgroud)

有可能进行验证validates_presence_of :address吗?使用此设置创建对象时遇到问题.

我们首先要创建一个像这样的业务对象

b = Business.new(name: "Hello23")
b.address = Address.new(street: "House 43 BCD")
b.save!
Run Code Online (Sandbox Code Playgroud)

这不起作用.它给出了undefined method constantize for 0:Fixnum一个错误,因为当它试图将地址保存到db时,它找不到可寻址的id,因为业务尚未保存并且没有为其分配id .

但是从另一方面来说也是不可能的 - 如果没有地址我就无法保存业务.

处理这种情况的最佳方法是什么?

****除此之外,如果我还想在地址方面进行验证,就像这样**

validates_presence_of :addressable
Run Code Online (Sandbox Code Playgroud)

我已经在这2天内一直在努力解决这一切.让我们看看你们有什么想法?**

validation activerecord ruby-on-rails-3

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

Rails表单内联错误

我有一个包含大量字段的大型表单,我们在rails中获取错误的方法是将它们驻留在模型对象内。我想要一种干净的方法来显示每个字段以外的错误,而不是分别显示。有没有可以做到这一点的宝石,如果现在可以做到这一点的最佳方法是什么?

我希望每个错误除显示错误所在的字段外显示。

validation ruby-on-rails ruby-on-rails-3

0
推荐指数
1
解决办法
1534
查看次数