小编Phr*_*ogz的帖子

将数组转换为字符串

我需要将哈希的输出加入到字符串中.

哈希看起来像这样:

 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)

最好的方法是什么?我可以轻松地浏览它,但输出有换行符,我需要删除这些以及逗号.

ruby ruby-on-rails

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

按发生次数排序和显示项目

我发现自己一再想要计算数组中项目的出现次数,并显示顶部项目及其实际计数.我已经编写了如下代码,这么多次我认为它是一个反复出现的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

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

使用运行时确定的属性定义结构体

我注意到 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)

ruby

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

如何用\ n字符替换新行

存储在数据库中的数据是这样的:

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打印出实际字符。我怎样才能做到这一点?

ruby ruby-on-rails

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

考虑单个哈希键值合并哈希数组

我有一系列像这样的哈希.

[
 {"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.

ruby

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

在表单中乘以两个值

对于我的代码,我试图将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)

html javascript html5

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

\ w +如何选择整个单词?

在一个简单的正则表达式中,我理解这一点

\w
Run Code Online (Sandbox Code Playgroud)

给出一个单词字符; 但是,我不知道如何添加加号(+):

\w+
Run Code Online (Sandbox Code Playgroud)

选择整个单词.在我看来,加号只意味着一个或多个单词字符,所以我不明白它将如何扩展到整个单词.

regex

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

使用元素替换TextNode中间的文本

我想在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复制到字符串,并使用我的海关标签来识别文本节点并以这种方式修改它们.但如果我不必,我宁愿不要.

html javascript dom textnode

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

从磁盘上的文件读取哈希

这是我保存到文件中以供以后读取的哈希。

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)

ruby high-availability

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

如何按特定值过滤模型的行?

我想只返回属于用户的元素.该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)

但它没有奏效.我该怎么办?

ruby activerecord ruby-on-rails

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