显示来自 Rails/Neo4j 的哈希值

Displaying Hashed values from Rails/Neo4j

我正在从 Postgres 迁移到 Neo4j,我试图显示我的 Neo4j 查询的结果是部分的。

home_controller.rb

  def index                
    @products = Product.as(:p).where(featured: True).limit(12).pluck(:p)
    respond_with(@products)
  end

index.html.erb

<div class="row">
  <div id="products">
    <%= render partial: "/products/product_display", collection: @products, as: :product, locals: { product_class: "col-lg-4 col-md-4 col-sm-4 product" } %>
  </div>
</div>

_product_display.html.erb

:
  <div class="product-title">
    <h5><%= link_to product.product_name, product_detail_path(product) %></h5>
  </div>
:

我似乎遇到的问题是 returns 以下内容:

[#<Product>, #<Product>, #<Product>, #<Product>, #<Product>, #<Product>, #<Product>, #<Product>, #<Product>, #<Product>, #<Product>, #<Product>]

我得到:

undefined method `product_name' for #<Product>

我确定这只是掌握对 Rails 的基本理解的一部分,但使用 Postgres 没问题。

我是新手,希望得到一些帮助。

我猜您没有为 product_name 分配 属性。由于 Neo4j 是无模式的,它不能像 ActiveRecord 那样从数据库中读取列列表。如果你这样做会怎样?

class Product
  include Neo4j::ActiveNode

  property :product_name
end

property 方法设置 product_nameproduct_name= 方法,这些方法设置 属性 用于持久化。

对于迁移,如果您已经设置了 ActiveRecord 模型,您应该检查这个项目:

https://github.com/neo4jrb/neo4apis-activerecord

它不需要 ActiveRecord 模型,但它们使导入更清晰。您仍然需要按照我上面的建议设置您的 Neo4j 模型。

我是 neo4apis-activerecordneo4j/neo4j-core 宝石的维护者之一,很高兴在这里或 Gitter 上回答任何其他问题