我将 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) 我有一个带有多个文本框和一组按钮的表单。使用下面的 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。这个想法是可以单击按钮并且可以使用任何文本框。
我有一个将用户请求作为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红宝石原理
我正在编辑的 rails 应用程序的每个文件都显示此警告,missing frozen string literal comment我知道这用于保留内存并避免为所有字符串文字重新分配内存,但是是否有必要在 rails 上使用或默认启用?如果是这样,如何在全球范围内启用它?
// 扁平化 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) 我有这样的哈希 -
{"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) 我正在进行RoR教程第5章的练习,但似乎无法弄清楚使用什么文本代替“ FILL_IN”,我试图通过尝试使实际值与预期值相匹配来读取错误消息。我究竟做错了什么?此外,有人可以解释如何<expected>和<actual>工作在这个测试中,因为我看不到“预期”字样或“实际”的任何地方。
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 中找到数组中最长的名称。这是我尝试过的:
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)
我收到一条错误消息,指出我有一个未定义的变量。