小编Clo*_*boy的帖子

带有多个变量的Ruby case语句

case..when..else当你需要将标准与单个变量匹配时,Ruby有一个相当强大的构造.在不简单地嵌套case语句的情况下,将标准与多个变量匹配的"规范"方法是什么?

在数组中包装多个变量(如[x, y])并与之匹配并不等效,因为Ruby不会将魔法case ===运算符应用于数组的元素 ; 运算符仅适用于数组本身.

我将继续前进并回答社区维基的回答,并在这个问题上进行了(击败).

ruby case pattern-matching

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

Rails 3是否有find_by关联魔法?

具体来说,我们假设我们有两个合理的模型:

  1. TieDyeCentipede, 哪一个 has_many :legs
  2. Leg,它有一个:color属性.

作为一个TieDyeCentipede,没有两条腿是相同的颜色.事实上,特定腿部的颜色在我们所有的腿部中都是独一无二的TieDyeCentipedes.

基于这种独特性,我们希望Centipede通过特定颜色的腿找到一个特定的 - 比方说:deep_sky_blue.

我可以这样做:

critter = Leg.find_by_color(:deep_sky_blue).tie_dye_centipede

但是,我可以使用find_by_*这个TieDyeCentipede类的方法吗?

ruby-on-rails associations ruby-on-rails-3

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

Ruby on Rails 3中的类方法 - 我完全迷失了!

背景在这里.

在上面的链接中,给出了以下示例:

class << self
  def by_author(author)
    where(:author_id => author.id)
  end
end
Run Code Online (Sandbox Code Playgroud)

除了这个语法对像我这样的初学者来说是陌生的 - 我一直认为类方法是用def self.my_class_method - 在哪里可以找到Ruby on Rails中的类方法的文档?

据我所知,类方法总是在类本身(MyClass.my_class_method)上调用,但是如果Rails中的类方法是可链接的,那么似乎必须在其他地方进行其他操作!

编辑:

我想通过对类方法的语法做出评论来欺骗我.我真的在问Rails如何使类方法可链接 - 我理解方法链如何工作,但不知道Rails如何允许链接类方法而不在链中的每个"链接"之后实际返回类对象本身.

ruby ruby-on-rails

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

sqlite,计算外键引用

我有两个表,一个定义列表,另一个定义列表中的项目.当我运行这个时,我只获得包含引用它们的项目的列表.我真的需要获得列表中所有行的结果以及items表中引用每个列表的行数.

SELECT name, COUNT(items.listId) as itemCount
FROM lists 
INNER JOIN items 
ON lists._id = items.listId
GROUP BY items.listId
Run Code Online (Sandbox Code Playgroud)

任何帮助将非常感激.

sql sqlite

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

在Rails中,如何将参数传递给`capture`方法?

在Rails助手中,您可以capture使用该capture方法输出ERB块.但是,如果ERB块需要参数怎么办?capture在这种情况下我该如何使用?

对于一个简单的例子:

<% my_helper(:parameter, models) do |model| %>
  <%= model.eye_color %>
<% end %>
Run Code Online (Sandbox Code Playgroud)

在该my_helper方法中,我想用块包围每个迭代的输出<span class='color'>...</span>.

我知道我可以捕获ERB块的输出并将其存储在变量中html = capture(&block),但我不知道如何将必要的model参数传递给该块!

ruby-on-rails erb helper ruby-on-rails-3

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

救命!我的application_helper.rb变得笨拙

application_helper.rb变得越来越大了.在我的辩护中,它只包含HTML生成方法,并且这些方法都不执行任何类型的业务逻辑.这些方法都不是特定于任何页面或控制器,并且大多数方法彼此无关.

这个问题的典型解决方案是什么?吸了吗?创建其他*_helper.rb文件以吸收一些application_helper方法?

ruby-on-rails helper ruby-on-rails-3

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

将状态代码添加到Rails 3中的:root重定向会导致恼人的"您正被重定向"页面

此代码正在执行rescue_from.

这有效:

redirect_to :root, :notice => 'Mice'
Run Code Online (Sandbox Code Playgroud)

这会导致Rails 3生成"您正在被重定向"页面:

redirect_to :root, :status => 403, :notice => 'Mice'
Run Code Online (Sandbox Code Playgroud)

有类似的问题,但我没有看到最近或完全匹配这种情况.难道我做错了什么?

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

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

在Rails 3中,如何获取控制器的`index`动作的路径?

在我的routes.rb:

get 'contact/index'
Run Code Online (Sandbox Code Playgroud)

如果重要,contact那么控制器只有一种index方法; 它具有相应的模型.

在我的布局文件中:

<%= link_to 'Contact', contact_path %>
Run Code Online (Sandbox Code Playgroud)

这是我得到的错误:

undefined local variable or method `contact_path'
Run Code Online (Sandbox Code Playgroud)

我必须给我的路线别名吗?如果是这样,我该怎么做?

routing ruby-on-rails ruby-on-rails-3

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

使用范围和关联在Rails 3中保持DRY

以下是相关事实:

  1. 每个topic has_many comments.

  2. Comment模型有一个scope被调用very_popular,我们将假装涉及比较它的几个列.

    def self.very_popular
      # lots of cool stuff
    end
    
    Run Code Online (Sandbox Code Playgroud)
  3. Topic模型有一个scope叫做exciting,其中包括所有topicsvery_popular comments.

3号是我被困的地方.以下结果导致缺少方法异常,并且听起来很可怜​​,我不知道还有什么可尝试的!

def self.exciting
  join(:comments).very_popular
end
Run Code Online (Sandbox Code Playgroud)

如何very_popularComment模型范围内重用模型中Topic的范围?

scope ruby-on-rails associations arel ruby-on-rails-3

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

在 Rails 中,如何制作循环助手?

假设我想创建一个 HTML 列表助手,它允许我循环遍历集合,并且仅在存在任何列表项时输出<ul><ol>标签(我实际上想到的是有点令人讨厌,但这适用于一个例子)。

就像是:

<% html_list(:ul, MyModel.all) do |my_model| %>
  <span><%= my_model.id %></span>
<% end %>
Run Code Online (Sandbox Code Playgroud)

(正如你所知,我迷路了。)

我无法理解我的html_list方法会发生什么。你介意给我指出正确的方向吗?

ruby-on-rails helper ruby-on-rails-3

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