2017-05-30 27 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的方法他列的價值。 –

相關問題