2017-05-30 22 views
0

我是rubyonrails的新手。现在正在为Shopify项目工作。我从我的桌子上收集了一个集合,我无法在视图中打印任何特定的字段值。如何访问RubyOnrails中的查询集合中的特定对象

My Query in controller(its helper method)。

def getcustomoptions product_id 
    customoptions = Productoption.where(product_id: product_id).first 
    return ActiveSupport::JSON.encode(customoptions) 
end 

helper_method :getcustomoptions 

而且在我看来,当我调试视图中的输出,

pdtoption = getcustomoptions(option.id) 
debug pdtoption 

{"id":3,"product_id":10647391438,"front_preview":"tomrain.s3.eu-central-1.amazonaws.com/productoptions/front_previews/000/000/003/original/collar-green-front.png?1496132797","left_side_preview":"tomrain.s3.eu-central-1.amazonaws.com/productoptions/left_side_previews/000/000/003/original/t-shirt-left-side.jpg?1496132798","back_preview":"tomrain.s3.eu-central-1.amazonaws.com/productoptions/back_previews/000/000/003/original/collar-green-back.png?1496132798","right_side_preview":"tomrain.s3.eu-central-1.amazonaws.com/productoptions/right_side_previews/000/000/003/original/tshirt-brightlights-side.jpg?1496132798","front_preview_file_name":"collar-green-front.png","front_preview_content_type":"image/png","front_preview_file_size":275338,"front_preview_updated_at":"2017-05-30T08:26:37.864Z","left_side_preview_file_name":"t-shirt-left-side.jpg","left_side_preview_content_type":"image/jpeg","left_side_preview_file_size":79742,"left_side_preview_updated_at":"2017-05-30T08:26:38.280Z","back_preview_file_name":"collar-green-back.png","back_preview_content_type":"image/png","back_preview_file_size":250070,"back_preview_updated_at":"2017-05-30T08:26:38.437Z","right_side_preview_file_name":"tshirt-brightlights-side.jpg","right_side_preview_content_type":"image/jpeg","right_side_preview_file_size":56997,"right_side_preview_updated_at":"2017-05-30T08:26:38.618Z"} 

虽然我考虑的结果进行解码,

pdtoption = ActiveSupport::JSON.decode(getcustomoptions(option.id)) 
debug pdtoption 

{"id"=>3, "product_id"=>10647391438, "front_preview"=>"tomrain.s3.eu-central-1.amazonaws.com/productoptions/front_previews/000/000/003/original/collar-green-front.png?1496132797", "left_side_preview"=>"tomrain.s3.eu-central-1.amazonaws.com/productoptions/left_side_previews/000/000/003/original/t-shirt-left-side.jpg?1496132798", "back_preview"=>"tomrain.s3.eu-central-1.amazonaws.com/productoptions/back_previews/000/000/003/original/collar-green-back.png?1496132798", "right_side_preview"=>"tomrain.s3.eu-central-1.amazonaws.com/productoptions/right_side_previews/000/000/003/original/tshirt-brightlights-side.jpg?1496132798", "front_preview_file_name"=>"collar-green-front.png", "front_preview_content_type"=>"image/png", "front_preview_file_size"=>275338, "front_preview_updated_at"=>"2017-05-30T08:26:37.864Z", "left_side_preview_file_name"=>"t-shirt-left-side.jpg", "left_side_preview_content_type"=>"image/jpeg", "left_side_preview_file_size"=>79742, "left_side_preview_updated_at"=>"2017-05-30T08:26:38.280Z", "back_preview_file_name"=>"collar-green-back.png", "back_preview_content_type"=>"image/png", "back_preview_file_size"=>250070, "back_preview_updated_at"=>"2017-05-30T08:26:38.437Z", "right_side_preview_file_name"=>"tshirt-brightlights-side.jpg", "right_side_preview_content_type"=>"image/jpeg", "right_side_preview_file_size"=>56997, "right_side_preview_updated_at"=>"2017-05-30T08:26:38.618Z"} 

但我无法打印/显示特定的值(例如:front_preview)。我为此奋斗了3个多小时,但找不到处理这种情况的正确方法。任何帮助/详细解释赞赏。

谢谢。

+0

做'pdtoption ['front_preview']' –

+0

你如何访问哈希值内?你可以发布视图的示例代码吗? – Niklas

+0

嗨,我的看法。我想这一点, 'code' <% pdtoption = ::的ActiveSupport JSON.decode(getcustomoptions(option.id)) %> ​​<%= pdtoption [ 'front_view']%> 'code' 它引发ActionView :: Template :: Error(未定义方法'[]'为零:NilClass –

回答

0

如果仔细查看ActiveSupport::Json.decode方法,它会解析您的Json字符串并返回Ruby Hash。要访问Hash pdtoption的数据,您需要使用普通的Ruby哈希访问器方法。

pdtoption["id"] #=> 3 

要将数据从控制器传递到视图,您不需要每次对数据进行编码和解码。您可以将您的customoptions用您的帮助方法返回并在视图中进行访问。

+0

当我直接使用查询输出它似乎像这样, ---红宝石/对象:Productoption concise_attributes:?! - 红宝石/对象:ActiveRecord的::属性:: FromDatabase 名称:ID value_before_type_cast:3 - 红宝石/对象:ActiveRecord的::属性:: FromDatabase 名称:PRODUCT_ID value_before_type_cast:10647391438 - 红宝石/对象:ActiveRecord的::属性:: FromDatabase 名:front_preview value_before_type_cast:collar-green-front.png 但找不到显示t的方法他列的价值。 –

相关问题