使用Shopify API,Ruby on Rails为产品选择特定的元字段

use*_*277 3 shopify ruby-on-rails-3.1

在液体模板中,这是这样实现的:

{{ product.metafields.book.author }}
Run Code Online (Sandbox Code Playgroud)

它返回'author'的值,因为它的关键'book'

我正在使用Shopify API和Ruby on Rails并成功遍历给定产品的每个元数据:

在控制器中:

@products = ShopifyAPI::Product.find(:all, :params => {:limit => 10})
Run Code Online (Sandbox Code Playgroud)

在视图中:

<% @products.metafields.each do |metafield| %>
<%= metafield.key %> : <%= metafield.value %>
<% end %>
Run Code Online (Sandbox Code Playgroud)

这将返回产品的所有元数据,如预期的那样.如何仅返回与特定键匹配的元字段,即上述示例中的"book"?

Pau*_*son 7

# add metafield
product = ShopifyAPI::Product.find(product_id)
product.add_metafield(ShopifyAPI::Metafield.new({
   :description => 'Author of book',
   :namespace => 'book',
   :key => 'author',
   :value => 'Kurt Vonnegut',
   :value_type => 'string'
}))

# retrieve metafield
author = ShopifyAPI::Metafield.find(:first,:params=>{:resource => "products", :resource_id => product.id, :namespace => "book", :key => "author"}).value
Run Code Online (Sandbox Code Playgroud)

更多信息:http://www.shopify.com/technology/3032322-new-feature-metafields


use*_*277 1

这有效:

ShopifyAPI::Metafield.find(:first,:params=>{:resource => "products", :resource_id => 94549954, :key => "book"}) 
Run Code Online (Sandbox Code Playgroud)