小编eng*_*nky的帖子

升级 ruby​​ 版本时出错:未定义的方法“yaml_as”

我将 Rails 应用程序的 ruby​​ 版本从 2.2.1 升级到 2.5.1。但是,当我尝试启动 rails 服务器时,它给了我这个错误。

constant OpenSSL::SSL::SSLContext::METHODS is deprecated Traceback (most recent call last):     
25: from bin/rails:4:in `<main>'    
24: from bin/rails:4:in `require'   
23: from /home/jaydee/.rvm/gems/ruby-2.5.1/gems/railties-4.2.10/lib/rails
  /commands.rb:17:in `<top (required)>'     
22: from /home/jaydee/.rvm/gems/ruby-2.5.1/gems/railties-4.2.10/lib/rails
  /commands/commands_tasks.rb:39:in `run_command!'  
21: from /home/jaydee/.rvm/gems/ruby-2.5.1/gems/railties-4.2.10/lib/rails
  /commands/commands_tasks.rb:75:in `server'    
20: from /home/jaydee/.rvm/gems/ruby-2.5.1/gems/railties-4.2.10/lib/rails
  /commands/commands_tasks.rb:75:in `tap'   
19: from /home/jaydee/.rvm/gems/ruby-2.5.1/gems/railties-4.2.10/lib/rails
  /commands/commands_tasks.rb:78:in `block in server'   
18: from /home/jaydee/.rvm/gems/ruby-2.5.1/gems/railties-4.2.10/lib/rails
  /commands/commands_tasks.rb:78:in `require'   
17: from /home/jaydee/source/ruby-upgrade/shiftshark/config
  /application.rb:6:in `<top (required)>'   
16: from /home/jaydee/.rvm/gems/ruby-2.5.1/gems/bundler-1.17.1
  /lib/bundler.rb:114:in `require'  
15: from /home/jaydee/.rvm/gems/ruby-2.5.1/gems/bundler-1.17.1/lib/bundler
  /runtime.rb:65:in `require'   
14: from /home/jaydee/.rvm/gems/ruby-2.5.1/gems/bundler-1.17.1/lib/bundler
  /runtime.rb:65:in …
Run Code Online (Sandbox Code Playgroud)

ruby ruby-on-rails

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

如何通过在最近使用的文本框中的光标处单击按钮来插入文本?

我有一个带有多个文本框和一组按钮的表单。使用下面的 Javascript,我可以单击一个按钮并将文本插入到其中一个命名框中。

单击按钮时,是否可以将文本插入到最近的/活动的文本框中?

目前我有这个,但它使用的是文本框的特定 ID,而不是最近使用/活动的 ID;

   $( 'input[type=button]' ).on('click', function(){
      var cursorPos = $('#my_text_box').prop('selectionStart');
      var v = $('#my_text_box').val();
      var textBefore = v.substring(0,  cursorPos );
      var textAfter  = v.substring( cursorPos, v.length );
      $('#my_text_box').val( textBefore+ $(this).val() +textAfter );
    });
Run Code Online (Sandbox Code Playgroud)

更清晰的 JSFiddle 示例;

http://jsfiddle.net/bd1xf0sj/1/

这个想法取决于单击按钮时您所在的文本框,而不是使用某个文本框的 ID。这个想法是可以单击按钮并且可以使用任何文本框。

javascript jquery

4
推荐指数
2
解决办法
309
查看次数

计算哈希中最高的最大值3个值

我有一个将用户请求作为json的类,如下所示:

   json = { "val": { "a": 10, "b": 50, "c": 20, "d": 30, "e": 15 } 
   }
Run Code Online (Sandbox Code Playgroud)

并返回哈希值的最大值3:

例如:

它应该返回:


{
"b": 50
"d": 30
"c": 20
}
Run Code Online (Sandbox Code Playgroud)

这是我的方法:


require 'json'

module UserRequest
  class << self
    def call(json)
      original = JSON.parse(json)
      covers   = original["covers"]
      calculate_max(covers, 3)
    end

    def calculate_max(covers, max_num)
      sorted = covers.sort_by { |k, v| v }
      Hash[max_array(sorted, max_num)]
    end

    def max_array(array, max_num)
      size = array.size
      array.slice(size-max_num..last)
    end
  end
end

UserRequest.call(json)

Run Code Online (Sandbox Code Playgroud)

有没有更好的方法可以做到这一点。请帮忙。应遵循SOLID红宝石原理

ruby

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

在 Rails 应用程序中真的需要“#frozen_string_literal: true”???我需要把它放在每个文件中吗?

我正在编辑的 rails 应用程序的每个文件都显示此警告,missing frozen string literal comment我知道这用于保留内存并避免为所有字符串文字重新分配内存,但是是否有必要在 rails 上使用或默认启用?如果是这样,如何在全球范围内启用它?

ruby ruby-on-rails ruby-on-rails-5

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

Ruby 扁平化 JSON 对象或哈希

// 扁平化 JSON 对象 //(想要将嵌套哈希中的所有键合并为字符串,并希望将其输出到数组列表中)

input1 = {a: {b: {c: {} }, d:[] }, e: "e", f: nil, g: -2}
input2 = {a: {b: {c: {h: {j: ''}, m: {n: ''}}}, d: {k: {l: '' } }},e: "e",f: nil,g: -2}
Run Code Online (Sandbox Code Playgroud)

// 上述输入的预期输出应该是一个包含所有这些键(按任意顺序)的数组

output1 = ["g", "f", "e", "a.b.c", "a.d"]
output2 = ["a.b.c.h.j", "a.b.c.m.n", "a.d.k.l", "e", "f", "g"]
Run Code Online (Sandbox Code Playgroud)

ruby flatten ruby-hash

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

从数组哈希中拉出键和值

我有这样的哈希 -

    {"examples"=>
      [{"year"=>1999,
            "provider"=>{"name"=>"abc", "id"=>711},
            "url"=> "http://example.com/1",
            "reference"=>"abc",
            "text"=> "Sample text 1",
            "title"=> "Sample Title 1",
            "documentId"=>30091286,
            "exampleId"=>786652043,
            "rating"=>357.08115},
        {"year"=>1999,
            "provider"=>{"name"=>"abc", "id"=>3243},
            "url"=> "http://example.com/2",
            "reference"=>"dec",
            "text"=> "Sample text 2",
            "title"=> "Sample Title 2",
            "documentId"=>30091286,
            "exampleId"=>786652043,
        "rating"=>357.08115},
        {"year"=>1999,
            "provider"=>{"name"=>"abc", "id"=>191920},
            "url"=> "http://example.com/3",
            "reference"=>"wer",
            "text"=> "Sample text 3",
            "title"=> "Sample Title 3",
            "documentId"=>30091286,
            "exampleId"=>786652043,
        "rating"=>357.08115}]
}
Run Code Online (Sandbox Code Playgroud)

并且我想通过拉出键来创建一个新数组,并且仅为"text","url"和"title"键提供值,如下所示.

   [
     {"text"=> "Sample text 1", "title"=> "Sample Title 1", "url"=> "http://example.com/1"},
     {"text"=> "Sample text 2", "title"=> "Sample Title 2", "url"=> "http://example.com/2"},
     {"text"=> "Sample text …
Run Code Online (Sandbox Code Playgroud)

ruby

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

RoR教程-直接测试full_title助手

我正在进行RoR教程第5章的练习,但似乎无法弄清楚使用什么文本代替“ FILL_IN”,我试图通过尝试使实际值与预期值相匹配来读取错误消息。我究竟做错了什么?此外,有人可以解释如何<expected><actual>工作在这个测试中,因为我看不到“预期”字样或“实际”的任何地方。

RoR教程中的说明

RoR教程中的代码图片

我的错误消息代码

建议更改导致的错误消息

require 'test_helper'

class ApplicationHelperTest < ActionView::TestCase
  test "full title helper" do
    assert_equal full_title,         "Kim's Cool Rails Site"
    assert_equal full_title("Help"), "Kim's Cool Rails Site | Help"
  end
end
Run Code Online (Sandbox Code Playgroud)

ruby ruby-on-rails railstutorial.org

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

尝试在 Ruby 中找到数组中最长的字符串

如何在 ruby​​ 中找到数组中最长的名称。这是我尝试过的:

people = ["john", "clark", "stan", "mike", "nick", "devon"]


def find_longest_name(people)
  longest_name = nil
  longest_name_length = -1
  people.each do |friend|
    if friend.length > longest_name_length
      longest_name = frined
      longest_name_length = friend.length
    end
  end
 return longest_name
end
puts "#{longest_name_length}"
Run Code Online (Sandbox Code Playgroud)

我收到一条错误消息,指出我有一个未定义的变量。

ruby

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