小编Gar*_*ows的帖子

将多个字符串传递给ruby starts_with?

我有这个代码

if self.name.starts_with?('Bronze') || self.name.starts_with?('Silver') ||self.name.starts_with?('Gold')
Run Code Online (Sandbox Code Playgroud)

有没有办法一次性传递所有这些字符串而不是大量的OR,因为我可能需要扩展它?

ruby string ruby-on-rails

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

Rails:rails 应用程序控制器中的条件重定向

我从两个不同的视图调用的控制器中有一个操作。在每种情况下,我都希望操作重定向回单击链接的页面。目前我正在这样做......

在这个视图中,我传递了一个这样的参数......

%a.showtooltip#wprofile{:href => idea_vote_up_path(@idea, :source => 'idea'),  :title => 'Awesome idea - vote up !', }
Run Code Online (Sandbox Code Playgroud)

并在控制器中...

if params[:source] == 'idea'
  redirect_to idea
else
  redirect_to ideas_path
end
Run Code Online (Sandbox Code Playgroud)

这工作正常,但感觉不优雅,尤其是当它最终出现在几个动作中时。有没有更好的办法?

ruby ruby-on-rails

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

在一行中删除多个 Rails 会话变量

我有删除多个变量的代码,因此......

session.delete(:a)
session.delete(:b)
session.delete(:c)
session.delete(:d)
Run Code Online (Sandbox Code Playgroud)

是否可以一次性删除它们而不是 4 行?

ruby ruby-on-rails

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

Ruby 将整数转换为小时和分钟

我需要在 Ruby 中将整数转换为小时和分钟,但我的大脑冻结了。我有一个称为持续时间的整数字段,它是在从表单上的小时和分钟字段填充表单时设置的。这但效果很好。我正在挣扎的是走另一条路。我需要采用整数形式的@duration,并在编辑记录时填充表单字段。

所以在我正在做的表格上

= select_tag "hours", options_for_select((0..12).step(1)), :prompt => "hours", :include_blank => "#{@hours}",  required: true
Run Code Online (Sandbox Code Playgroud)

此示例中的小时数来自控制器,它不会

@hours = (@log.duration / 60).to_i
Run Code Online (Sandbox Code Playgroud)

我在表格上的分钟字段是这样的...

= select_tag "minutes", options_for_select((0..60).step(1)), :prompt => "Minutes", :include_blank => "#{@minutes}",  required: true
Run Code Online (Sandbox Code Playgroud)

这就是我挣扎的地方。我需要在控制器中生成 @minutes 变量,但无法思考如何获得它。我想我需要做的是知道当@log.duration 除以 60 时剩下的余数,但我怎么得到这个?

谢谢

ruby ruby-on-rails

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

红宝石时间和变量的比较

我有两个模型,一个是Employee和一个WorkingPattern.Employee的一个实例belongs_to一个工作模式.

工作模式看起来像这样

        :id => :integer,
      :name => :string,
       :mon => :boolean,
       :tue => :boolean,
       :wed => :boolean,
       :thu => :boolean,
       :fri => :boolean,
       :sat => :boolean,
       :sun => :boolean
Run Code Online (Sandbox Code Playgroud)

我需要知道员工今天是否应该上班.因此,如果今天是星期二,并且该员工的工作模式记录报告:tue = true然后返回true,等等.我没有选择重命名WorkingPattern模型上的字段以匹配日期名称.

我知道

Time.now.strftime("%A")
Run Code Online (Sandbox Code Playgroud)

将返回当天的名称.然后我发现我可以通过这样做获得字符串的前3个字符

Time.now.strftime("%A")[0,3]
Run Code Online (Sandbox Code Playgroud)

所以现在我把"Tue"作为字符串返回.添加一个小写

Time.now.strftime("%A")[0,3].downcase
Run Code Online (Sandbox Code Playgroud)

现在我有了"tue",它匹配了WorkingPattern上的符号:tue.

现在我需要一种在正确的日期检查字符串的方法,理想情况是这并不意味着每个员工对数据库进行7次查询!

任何人都可以建议吗?

ruby ruby-on-rails

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

使用带有多个变量的Ruby collect

当然这是一个简单的,但是可以使用collect返回多个属性

所以我能做到

User.all.collect { |user| user.firstname}
Run Code Online (Sandbox Code Playgroud)

但我不能这样做

User.all.collect { |user| user.firstname, user.lastname}
Run Code Online (Sandbox Code Playgroud)

我错过了什么?

ruby ruby-on-rails

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

从部分字符串获取 ruby​​ 中一个月的第一天和最后一天

我有一个表,其中有一列 for year,它是一个integer,还有一个列 for month,它又是一个integer。我需要(在红宝石中)能够以每行的astart_date和 an结束。end_date

因此,从第一行(年份为 2016 年、月份为 1)开始,我需要获取 start_date = 01/01/2016 和结束日期 = 31/01/2016。我知道我可以使用 begin_of_month 和 end_of_month 将它们放入 ruby​​ 中,但我需要先约会?

我迷失在 Date.parse 和 Date.strptime 中,真的需要有人解释一下。大概我一开始就找不到约会对象,因为我实际上没有一天可以工作!

帮助 :)

ruby ruby-on-rails

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

Ruby 批处理用于对讲的数组

我有一组需要处理的对象。我需要通过他们的 API 将它们发送到 3rd 方系统,它一次只允许我提交 100 个对象。

所以假设我有一个像这样的对象数组

myUserArray = [{first_name: 'Jon', last_name: 'Snow'}, {first_name: 'Sansa', last_name: 'Stark'}...]
Run Code Online (Sandbox Code Playgroud)

我最终像这样将其发送给他们的 API

intercom.users.submit_bulk_job(create_items: myUserArray)
Run Code Online (Sandbox Code Playgroud)

当对象数量小于 100 时,这可以正常工作,但由于它们的速率限制,当大于 100 时会引发错误,这很公平。我有 5000 个对象要处理,所以我需要一种将 myUserArray 批处理成 100 个块的方法,直到它们全部完成。将不胜感激任何建议!

ruby ruby-on-rails-3 intercom

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

使变量可供控制器中的多个操作访问

我在控制器动作中有一组布尔符号

这些目前采用以下格式进行1次操作

def my_action
  setup_stages = [:data_entry_completed, :data_validation_completed]
  setup_stages.each do |stage|
    do stuff
  end
end 
Run Code Online (Sandbox Code Playgroud)

我注意到我需要在另一个动作中使用这些符号,但不想复制它们.有没有办法让这个列表可以访问控制器中的多个动作,以便我可以迭代它们而不需要两次列表?

ruby ruby-on-rails

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

在数组中搜索ruby

我有一个数组os用户,奇怪的是,@ userss.

是否可以搜索此数组中的WITHIN以进一步缩小结果范围.我想要做的是以下内容

@users.where(:gender => nil)
Run Code Online (Sandbox Code Playgroud)

并最终得到一小部分用户,以便我可以报告丢失的数据.这可能吗?

ruby ruby-on-rails

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

在Ruby中切换两个布尔值

我在控制器操作中有以下代码,它查看用户,并将布尔值更改为相反的值,因此如果用户是,true则变为false,反之亦然:

  if current_user.enable_access
    current_user.update_attribute(:enable_access, false) 
  else
    current_user.update_attribute(:enable_access, true) 
  end
Run Code Online (Sandbox Code Playgroud)

有没有更简洁的方式来写这个?

ruby ruby-on-rails

0
推荐指数
2
解决办法
920
查看次数

标签 统计

ruby ×11

ruby-on-rails ×10

intercom ×1

ruby-on-rails-3 ×1

string ×1