小编jfa*_*als的帖子

如何在Ruby中的Hash中初始化一个数组

我正在尝试初始化一个Hash of Arrays,例如

@my_hash = Hash.new(Array.new)
Run Code Online (Sandbox Code Playgroud)

这样我就可以:

@my_hash["hello"].push("in the street")
=> ["in the street"]
@my_hash["hello"].push("at home")
=> ["in the street", "at home"]
@my_hash["hello"]
=>["in the street", "at home"]
Run Code Online (Sandbox Code Playgroud)

问题是任何新的哈希键也会返回 ["in the street", "at home"]

@my_hash["bye"]
=> ["in the street", "at home"]
@my_hash["xxx"]
=> ["in the street", "at home"]
Run Code Online (Sandbox Code Playgroud)

!!! ???

我怎么做错了什么是初始化Hash of Arrays的正确方法?

ruby arrays hash

34
推荐指数
2
解决办法
2万
查看次数

解决红宝石中的旅行商问题(50多个地点)

我在一家快递公司工作.我们目前通过"手"解决了50多个地点的路线.

我一直在考虑使用谷歌地图API解决这个问题,但我已经读到有24点的限制.

目前我们在服务器中使用rails,所以我正在考虑使用ruby脚本来获取50多个位置的坐标并输出合理的解决方案.

你会用什么算法来解决这个问题?

Ruby是一种很好的编程语言来解决这类问题吗?

你知道任何现有的ruby脚本吗?

ruby algorithm google-maps ruby-on-rails traveling-salesman

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

Rails accepted_nested_attributes_for错误,请帮我发现它

我一直在尝试遵循Active Record Nested Attributes Guide,但没有取得多大成功.

我有以下型号:

class Contact < ActiveRecord::Base
  has_many :telephones
  accepts_nested_attributes_for :telephones
end

class Telephone < ActiveRecord::Base
  belongs_to :contact
end
Run Code Online (Sandbox Code Playgroud)

在尝试创建联系人时:

contact = {
  :name => "John",
  :telephones => [
    {:telephone => '787445741'},
    {:telephone => '478589658'}
  ]
}
Contact.create(contact)
Run Code Online (Sandbox Code Playgroud)

我收到以下错误: ActiveRecord::AssociationTypeMismatch: Telephone(#80827590) expected, got Hash(#72886250)

你能帮我看看错误吗?我应该包含contact_controller.rb哪些代码?

activerecord ruby-on-rails

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

使用cURL(或任何其他PHP服务器端解决方案)将POST数据与POST数据一起转发到支付网关

我一直在玩cURL试图将POST数据传递到页面支付网关页面......

我无法模拟提交表单操作...我想将客户端转发到支付网关页面(连同POST数据)但我找不到这样做的方法...

我设法传递POST数据,但生成的页面在我的域中加载(而不是将用户转发到支付网关).

$connection = curl_init("https://paymentgateway.com/script");
curl_setopt($connection, CURLOPT_RETURNTRANSFER, 0);
curl_setopt($connection, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($connection, CURLOPT_POST, 1);
curl_setopt($connection, CURLOPT_POSTFIELDS, $postdata);
curl_exec($connection);
curl_close($connection);
Run Code Online (Sandbox Code Playgroud)

该怎么做?

php post curl payment-gateway

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

在gedit(gnome)中增加最近打开的文件列表

我一直在使用gedit作为编程文本编辑器......

我想将最近打开的文件数从5增加到10 ......

我查看了gedit首选项和gconf-editor gedit选项,但没有任何与最近打开的文件列表相关的内容.

我在哪里可以更改此设置?

gnome gedit

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

使用Prawn在表格/单元格内绘制格式化文本

我正在使用prawn-0.11.1.pre运行Rails 3.0.1

我刚做了一些基本测试,看看我是否可以让Prawn创建一个包含一些格式化文本的简单表:

data = ["Cell 1", formatted_text([{:text => "Cell 2"}])], 
       ["Cell 3","Cell 4"]
table(data)
render
Run Code Online (Sandbox Code Playgroud)

PDF呈现如下

Cell 2
[Cell 1][      ]
[Cell 3][Cell 4]
Run Code Online (Sandbox Code Playgroud)

(一张漂亮的桌子,但桌子外面有"Cell 2"字样)

我的目标是在Cell#2中获取格式化文本"Cell 2"...

我该怎么做?

ruby ruby-on-rails prawn

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

Solr 在单独的 docker 容器上使用 sunspot-rails

我正在尝试将工作中的 Rails 应用程序移动到 docker 环境。

遵循 UNIX(/docker) 哲学,我希望每个服务都在自己的容器中。

我设法让 redis 和 postgres 正常工作,但我正在努力让 slor 和 rails 相互交谈。

app/models/spree/sunspot/search_decorator.rb该行执行时在文件中

@solr_search.execute
Run Code Online (Sandbox Code Playgroud)

控制台上出现以下错误:

Errno::EADDRNOTAVAIL (Cannot assign requested address - connect(2) for "localhost" port 8983):
Run Code Online (Sandbox Code Playgroud)

在研究解决方案时,我发现人们只是将 solr 安装在与 Rails 应用程序相同的容器中。但我宁愿把它放在一个单独的容器里。

这是我的 config/sunspot.yml

development:
  solr:
    hostname: localhost
    port: 8983
    log_level: INFO
    path: /solr/development
Run Code Online (Sandbox Code Playgroud)

docker-compose.yml文件

version: '2'
services:
  db:
    (...)

  redis:
    (...)

  solr:
    image: solr:7.0.1

    ports:
      - "8983:8983"

    volumes:
      - solr-data:/opt/solr/server/solr/mycores

    entrypoint:
      - docker-entrypoint.sh
      - solr-precreate
      - mycore

    networks:
      - backend

  app:
    build: …
Run Code Online (Sandbox Code Playgroud)

solr ruby-on-rails sunspot-rails docker docker-compose

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