我需要将哈希的输出加入到字符串中.
哈希看起来像这样:
nas.location.walledgardens.to_s
=> "[#<Walledgarden id: 1, location_id: 12, url: \"polka.com\", created_at: \"2012-05-14 17:02:47\", updated_at: \"2012-05-14 17:02:47\">, #<Walledgarden id: 2, location_id: 12, url: \"test.com\", created_at: \"2012-05-14 17:02:47\", updated_at: \"2012-05-14 17:02:47\">, #<Walledgarden id: 3, location_id: 12, url: \"help.com\", created_at: \"2012-05-14 17:02:47\", updated_at: \"2012-05-14 17:02:47\">, #<Walledgarden id: 4, location_id: 12, url: \"yell.com\", created_at: \"2012-05-14 17:02:47\", updated_at: \"2012-05-14 17:02:47\">, #<Walledgarden id: 5, location_id: 12, url: \"sausage.com\", created_at: \"2012-05-14 17:02:47\", updated_at: \"2012-05-14 17:02:47\">]"
Run Code Online (Sandbox Code Playgroud)
我需要将url值加入以下格式:
polka.com,test.com,help.com
Run Code Online (Sandbox Code Playgroud)
最好的方法是什么?我可以轻松地浏览它,但输出有换行符,我需要删除这些以及逗号.
我发现自己一再想要计算数组中项目的出现次数,并显示顶部项目及其实际计数.我已经编写了如下代码,这么多次我认为它是一个反复出现的RSI诱导模式:
hits = Hash[ array.group_by{|o|o}.map{|o,a|[o,a.length]}.sort_by{|o,ct|[-ct,o]} ]
require 'pp'
pp hits
Run Code Online (Sandbox Code Playgroud)
我可以将它移动到Enumerable上的monkeypatch ...
module Enumerable
def counts(&blk)
blk ||= ->(o){o}
Hash[ group_by(&blk).map{|o,a| [o,a.length] }.sort_by{|o,ct| [-ct,o] } ]
end
end
a = %w[a b a b c d e g j a e c d k o k i l p a e c f d e a d e f s d v c ]
pp a.counts
#=> {"a"=>5,
#=> "d"=>5,
#=> "e"=>5,
#=> "c"=>4,
#=> "b"=>2,
#=> "f"=>2,
#=> "k"=>2, …Run Code Online (Sandbox Code Playgroud) 我注意到 Ruby 的理念是在运行时保持尽可能多的灵活性。
这是一个典型的(据我所知)Ruby 结构定义:
Person = Struct.new("Person", :name, :address)
Person.new("John", "Chicago, IL")
Run Code Online (Sandbox Code Playgroud)
我的问题是,当结构字段/成员列表也在运行时定义时,是否可以在运行时定义结构?看起来像这样的东西:
Person = Struct.new("Person", list_of_structure_fields)
Run Code Online (Sandbox Code Playgroud) 存储在数据库中的数据是这样的:
This is a line
This is another line
How about this line
Run Code Online (Sandbox Code Playgroud)
当我将其输出到视图时,我想将其转换为:
This is a line\n\nThis is another line\n\nHow about this line
Run Code Online (Sandbox Code Playgroud)
没有新行,并\n打印出实际字符。我怎样才能做到这一点?
我有一系列像这样的哈希.
[
{"package_details"=>{"name"=>"Package3", "price"=>3000.0, "id"=>"281"},"event_id"=>336},
{"package_details"=>{"name"=>"2000/-", "price"=>2000.0, "id"=>"280"}, "event_id"=>337},
{"package_details"=>{"name"=>"Package1", "price"=>1000.0, "id"=>"282"},"event_id"=>337},
{"package_details"=>{"name"=>"Package2", "price"=>2000.0, "id"=>"283"},"event_id"=>337}
]
Run Code Online (Sandbox Code Playgroud)
我希望这就像这样.
[
{"event_id"=>336, "package_details"=>[
{"name"=>"Package3", "price"=>3000.0, "id"=>"281"}
]},
{"event_id"=>337, "package_details"=>[
{"name"=>"2000/-", "price"=>2000.0, "id"=>"280"},
{"name"=>"Package1", "price"=>1000.0, "id"=>"282"},
{"name"=>"Package2", "price"=>2000.0, "id"=>"283"}
]},
]
Run Code Online (Sandbox Code Playgroud)
哈希应该根据相等的event_id值进行合并,并且事件可以包含许多包.
我想知道最简单的方法.虽然我可以做很多if和else s.
对于我的代码,我试图将2个参数调用到函数中.离开第二个输入框后,将两个数字相乘并将其放在第三个文本框中.如果前两个输入框中的任何一个为空,则将它们涂成浅红色.到目前为止这是我的代码,我错过了什么?
使用Javascript:
function multiply(one, two) {
if(one==""){
this.style.color='red';
}
if(two==""){
this.style.color='red';
}
else{
txt1=one * two;
return txt1;
}
}
Run Code Online (Sandbox Code Playgroud)
HTML5:
First Value: <input type="text" name="mFirst" />
Second Value: <input type="text" name="mLast" onblur="multiply(mFirst.value, mLast.value)" />
Multiplication of First and Second Value: <input type="text" name="answer">
Run Code Online (Sandbox Code Playgroud) 在一个简单的正则表达式中,我理解这一点
\w
Run Code Online (Sandbox Code Playgroud)
给出一个单词字符; 但是,我不知道如何添加加号(+):
\w+
Run Code Online (Sandbox Code Playgroud)
选择整个单词.在我看来,加号只意味着一个或多个单词字符,所以我不明白它将如何扩展到整个单词.
我想在TreeWalker的文本节点中插入html标签,但TreeWalker强制我的html括号进入< > 无论我尝试过什么.这是代码:
var text;
var tree = document.createTreeWalker(document.body,NodeFilter.SHOW_TEXT);
while (tree.nextNode()) {
text = tree.currentNode.nodeValue;
text = text.replace(/(\W)(\w+)/g, '$1<element onmouseover="sendWord(\'$2\')">$2</element>');
text = text.replace(/^(\w+)/, '<element onmouseover="sendWord(\'$1\')">$1</element>');
tree.currentNode.nodeValue = text;
}
Run Code Online (Sandbox Code Playgroud)
使用\ <或"而不是'将无济于事.我的解决方法是将所有DOM树复制到一个字符串并用它替换html主体.它适用于非常简单的网页并解决我的第一个问题,但是糟糕的黑客攻击并不会在一个简单的页面上工作.我想知道我是否可以直接使用文本节点而不是使用解决方法.以下是(当前错误)解决方法的代码:
var text;
var newHTML = "";
var tree = document.createTreeWalker(document.body);
while (tree.nextNode()) {
text = tree.currentNode.nodeValue;
if (tree.currentNode.nodeType == 3){
text = text.replace(/(\W)(\w+)/g, '$1<element onmouseover="sendWord(\'$2\')">$2</element>');
text = text.replace(/^(\w+)/, '<element onmouseover="sendWord(\'$1\')">$1</element>');
}
newHTML += text
}
document.body.innerHTML = newHTML;
Run Code Online (Sandbox Code Playgroud)
编辑:我意识到更好的解决方法是自定义标记文本节点((Customtag_Start_Here)等),将整个DOM复制到字符串,并使用我的海关标签来识别文本节点并以这种方式修改它们.但如果我不必,我宁愿不要.
这是我保存到文件中以供以后读取的哈希。
my_hash = {-1 => 20, -2 => 30, -3 => 40}
File.open("my_file.txt", "w") { |f| f.write my_hash }
#how it looks opening the text file
{-1 => 20, -2 => 30, -3 => 40}
Run Code Online (Sandbox Code Playgroud)
当我阅读它时,是我的问题所在。(以下代码与顶部分开)
my_hash = File.foreach("my_file.txt") { |f| print f }
p my_hash
#=> {-1 => 20, -2 => 30, -3 => 40}nil
Run Code Online (Sandbox Code Playgroud)
那nil弄乱了我其余的代码..不确定如何摆脱如果。为了清楚起见,其余代码...
back_up_hash = {-1 => 20}
if my_hash.nil?
my_hash = back_up_hash
end
Run Code Online (Sandbox Code Playgroud)
那一点nil总是使my_hash等于back_up_hash。我需要.nil?以防万一该文件没有哈希,否则问题将被进一步推低。
我还尝试读取(抓取?..这是一个小文件)这样的文件。
my_hash = File.read("my_file.txt") { …Run Code Online (Sandbox Code Playgroud) 我想只返回属于用户的元素.该user_id值是Run中的一列.我想要的只是选择runs来自的current_user.
def index
@runs = Run.all
respond_to do |format|
format.html # index.html.erb
format.json { render json: @runs }
end
end
Run Code Online (Sandbox Code Playgroud)
试过像
@runs = Run.where(user_id= => current_user.id)
Run Code Online (Sandbox Code Playgroud)
但它没有奏效.我该怎么办?