小编Sag*_*dya的帖子

Rails教程(M.Hartl)第3版,第8章,为什么应用程序无法忘记登录状态?

登录到应用程序然后完全关闭浏览器后,我重新打开希望注销的浏览器.但是我还在登录?

我在8.2.3节中更改布局链接,除此之外,应用程序按预期运行并运行.代码也是教程中的代码.我认为这些是相关文件:

应用程序/佣工/ sessions_helper.rb

module SessionsHelper

  # Logs in the given user.
  def log_in(user)
    session[:user_id] = user.id
  end

  # Returns the current logged-in user (if any).
  def current_user
    @current_user ||= User.find_by(id: session[:user_id])
  end

  # Returns true if the user is logged in, false otherwise.
  def logged_in?
    !current_user.nil?
  end
end
Run Code Online (Sandbox Code Playgroud)

应用程序/控制器/ sessions_controller.rb

class SessionsController < ApplicationController

  def new
  end

  def create
    user = User.find_by(email: params[:session][:email].downcase)
    if user && user.authenticate(params[:session][:password])
      log_in user
      redirect_to user
    else
      flash.now[:danger] = 'Invalid …
Run Code Online (Sandbox Code Playgroud)

ruby ruby-on-rails railstutorial.org

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

routes.rb文件中`self`的值是多少?

需要一些帮助来理解以下routes.rb文件:

Rails.application.routes.draw do
  get 'help' => 'static_pages#help'
end
Run Code Online (Sandbox Code Playgroud)

从我对Ruby这一行的理解:

get 'help' => 'static_pages#help'
Run Code Online (Sandbox Code Playgroud)

是相同的:

self.get('help' => 'static_pages#help')
Run Code Online (Sandbox Code Playgroud)

那么在这种情况下的价值是self什么?

ruby ruby-on-rails

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

排序这些类型的字符串的最佳方法是什么?

我需要获取目录和子目录中的所有文件,并且每个文件的日期都附加到文件名,如product_log_2016-11-17.txt

获取我使用的目录中存在的文件列表

all_logs = Dir["#{Rails.root}/log/product_logs/**/*.txt"]
Run Code Online (Sandbox Code Playgroud)

它返回这样的完整路径文件(我已从每个条目中删除了我的系统路径:

[
  "/log/product_logs/new_2/product_log_2016-11-17.txt",
  "/log/product_logs/new_2/products_log_2016-11-03.txt",
  "/log/product_logs/new_1/products_log_2016-10-04.txt",
  "/log/product_logs/new_1/product_log_2016-11-17.txt",
  "/log/product_logs/new_1/products_log_2016-11-03.txt"
]
Run Code Online (Sandbox Code Playgroud)

但是我希望像这样按日期排序:

[
  "/log/product_logs/new_2/product_log_2016-11-17.txt",
  "/log/product_logs/new_1/product_log_2016-11-17.txt",
  "/log/product_logs/new_2/products_log_2016-11-03.txt",
  "/log/product_logs/new_1/products_log_2016-11-03.txt",
  "/log/product_logs/new_1/products_log_2016-10-04.txt"
]
Run Code Online (Sandbox Code Playgroud)

我试过这样的:

all_logs.sort{|a, b|b.split("/").last.split("_").last.split(".").first <=>a.split("/").last.split("_").last.split(".").first }
Run Code Online (Sandbox Code Playgroud)

哪个有效,但似乎不是一个好的解决方案,任何人都可以让我知道什么是最好的方式来输入这种类型的列表?

ruby arrays sorting ruby-on-rails

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

有没有一种简单的方法可以将数字转换为字符串中的浮点数?

我有一个字符串input = "2 + 3",我想转换为"2.0 + 3.0".我用以下两种复杂的方法实现了这个目标:

floats   = input.scan(/\d+/).map(&:to_f)
operator = input.scan(/[+,\-,*,\/]/)     
operator.unshift(floats.first.to_s)
        .push(floats.last.to_s).join(' ')
#=> "2.0 + 3.0"
Run Code Online (Sandbox Code Playgroud)

要么:

input.split(/\s+/)
     .map{|i| ['+','-','*','/'].include?(i) ? i : i.to_f }
     .join(' ')
#=> "2.0 + 3.0"
Run Code Online (Sandbox Code Playgroud)

有更简单或更好的方法吗?

ruby regex

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

ruby将多维数组转换为一个数组

我合并了2个列表.

list1 = customer.links.where(ext: true).group(:link_id, :external).limit(100).order('count_id desc').count('id') 
list2 = customer.links.where(ext: false).where.not(url: '/specific_link').group(:url, :ext).limit(100).order('count_id desc').count('id')

list = list1.merge(list2).sort_by{|k, v| -v}
Run Code Online (Sandbox Code Playgroud)

结果是:

[[["/path/element1", false], 7], [[4, true], 5], [["/path/element6", false], 1]]
Run Code Online (Sandbox Code Playgroud)

我想将它转换为on维哈希,如下所示:

[["/path/element1", false, 7], [4, true, 5], ["/path/element6", false, 1]]
Run Code Online (Sandbox Code Playgroud)

当我使用时flatten,阵列之间没有分离.

ruby ruby-on-rails flatten multidimensional-array

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

如何在Rails中的`where`子句中使用变量?

如何在where函数中使用变量?

我有一个带有两个字段A和B(都是整数)的Rate模型,这有效:

Rate.where('A = 1 and B = 2')
Run Code Online (Sandbox Code Playgroud)

如何传递我在params哈希中得到的变量?

x = params[:x]
y = params[:y]
Rate.where('A = x and B = y')
Run Code Online (Sandbox Code Playgroud)

这不起作用并返回错误.

ruby-on-rails ruby-on-rails-4

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

在`if`语句中的OR条件

为什么是

if name.eql? 'Name1' || name.eql? 'Name2'
  # doSomething
end
Run Code Online (Sandbox Code Playgroud)

Ruby中不允许?在Ruby中执行此操作的好习惯是什么?

ruby

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

如何计算数字1到10的最小公倍数?

因为我是初学者Ruby开发人员.我想知道更高级的Ruby开发人员将如何解决这个问题.我在这里寻找最小的数字除以1到10之间的数字,没有任何余数.

更正式地,这被定义为两个或更多个整数的最小公倍数,在这种情况下是数字1到10.

我目前的尝试:

max_divider = 10
nums = (1..max_divider).to_a
found_count = 0
x = 0
while found_count == 0
  x += 1
  nums.each do |num|
    if x % num == 0
      found_count += 1
    end
  end

  if found_count != max_divider
    found_count = 0
  end
end

p x #=> 2520
Run Code Online (Sandbox Code Playgroud)

ruby

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

创建一个返回数组的正则表达式

我在Ruby工作.我需要创建一个正则表达式,它接受一个字符串,我想,且仅与开始的话返回一个数组"un"和结束"ing".我不知道该怎么做:/

def words_starting_with_un_and_ending_with_ing(text)
  !!text.capitalize.scan(/\A+UN\Z+ING/)
end
Run Code Online (Sandbox Code Playgroud)

ruby regex

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

基于截止值的数组的Ruby代码哈希

我有一系列浮动数字和一定的截止值:

myData = [1.3,1.5,1.7,1.7,16.7,18.4,19.2,19.5,19.6,20.2,20.8,58.4,60.7,
          61.2,61.2,116.4,121.2,122.7,123.2,123.2,138.5,149.5,149.5]
myBin = 5.3
Run Code Online (Sandbox Code Playgroud)

我想构建一个数组哈希,以便最后一个元素和数组的第一个元素之间的减法差异小于或等于myBin(5.3)

myHash = {
'hap_1' => [1.3,1.5,1.7],
'hap_2' => [16.8, 18.4,19.2,19.5,19.6,20.2,20.8],
'hap_3' => [58.4,60.7,61.2,61.2],
'hap_4' => [116.4,121.2],
'hap_5' => [122.7,123.2,123.2],
'hap_6' => [138.5],
'hap_7' => [149.5,149.5]}
Run Code Online (Sandbox Code Playgroud)

非常感谢您的时间和有用的帮助.干杯

ruby arrays hash

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