相关疑难解决方法(0)

范围生成中'..'(双点)和'...'(三点)之间的区别?

我刚刚开始学习Ruby和Ruby on Rails,并遇到了使用范围的验证代码:

validates_inclusion_of :age, :in => 21..99
validates_exclusion_of :age, :in => 0...21, :message => "Sorry, you must be over 21"
Run Code Online (Sandbox Code Playgroud)

起初我以为差异的包容端点,但在API文档我进去看了看,它并似乎并不重要,是否是.....:它总是包括端点.

但是,我在irb中进行了一些测试,它似乎表明..包括两个端点,而...只包括下限但不包括上限.它是否正确?

ruby syntax range

99
推荐指数
3
解决办法
4万
查看次数

Ruby/Rails循环中的魔术第一和最后一个指标?

Ruby/Rails在谈到基本用品的糖时会做很多很酷的事情,我认为有一种非常常见的情况,我想知道是否有人做过帮手或类似的东西.

   a = Array.new(5, 1)

   a.each_with_index do |x, i|
     if i == 0
       print x+1
     elsif i == (a.length - 1)
       print x*10
     else
        print x
     end
   end
Run Code Online (Sandbox Code Playgroud)

原谅丑陋,但这可以达到人们想要的......是否有一种红宝石的方式来对循环的第一个和最后一个做一些事情?

[编辑]我认为理想情况下这将是带有参数的数组的扩展(数组实例,所有元素函数,第一个元素函数,最后元素函数)......但我对其他想法持开放态度.

ruby ruby-on-rails syntactic-sugar

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

Hash.each中的最后一个元素

可能重复:
告诉ruby中.each循环的结束

我有一个哈希:

 => {"foo"=>1, "bar"=>2, "abc"=>3} 
Run Code Online (Sandbox Code Playgroud)

和代码:

foo.each do |elem|
  # smth
end
Run Code Online (Sandbox Code Playgroud)

如何识别循环中的元素是最后一个?就像是

if elem == foo.last
  puts 'this is a last element!'
end
Run Code Online (Sandbox Code Playgroud)

ruby

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

在每个块的Ruby中,如何对块内数组中的最后一条记录执行某些操作?

说我有这样一个块:

<% @help_sections.each do |section| %>
    <li><%= section.name %></li>
<% end %>
Run Code Online (Sandbox Code Playgroud)

但是在返回的最后一条记录中,我想做其他事情,例如在li那里应用一个类:

<li class="last"><%= section.name %></li>

我怎么用最干的方式做到这一点?

谢谢.

EDIT1:

我想我会简单地使用一个if语句和lastruby方法,但不知道如何在块中做到这一点?我知道,如果我只想要该数组中的最后一个元素,我可以这样做@help_sections.last,但这在Ruby块的范围内没有意义.

ruby sinatra

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

标签 统计

ruby ×4

range ×1

ruby-on-rails ×1

sinatra ×1

syntactic-sugar ×1

syntax ×1