2017-09-12 10 views
1

4.2から5.1にアップグレードされたアプリケーションのパラメータに問題があります。私はパラメータを許可しましたが、ドキュメンテーションが述べるように、私はハッシュ配列のオブジェクトを戻していますが、その値にアクセスできないようです。どうすればこのオブジェクトの値を取得できますか?ActionControllerの値へのアクセスパラメータhash

{"_method"=>"delete", "authenticity_token"=>"Z6ZqriiuXu6ODDqhGgocGiaN12rjKD6pUB6n/2v+CABZDAjwLzwczsMM3nM8f0PI0nww43o5mlC35HK+9PVa8w==", 
    "domain_name"=>"test.testmodule2.com.", 
    "hosted_zone_id"=>"/hostedzone/XXXXXXXXXX", 
    "ttl"=>"3600", 
    "type"=>"A", 
    "value"=>[{"value"=>"1.1.1.1"}], 
    "id"=>"/hostedzone/XXXXXXXXXX"} 

def record_params 
    params.permit!([:hosted_zone_id, :domain_name, :type, :ttl, :alias, :value]).to_h! 
end 


def destroy 
    value = params[:value] 
    # returns [<ActionController::Parameters {"value"=>"1.1.1.1"} permitted: true>] 
    # would like it to return [{"value"=>"1.1.1.1"}] 
end 

答えて

1

そのハッシュがparams[:value]の値である場合には、同様に、内部valueキーにアクセス:迅速な対応のための

params[:value] = { 
    "_method"=>"delete", 
    "authenticity_token"=>"...", 
    "domain_name"=>"test.testmodule2.com.", 
    "hosted_zone_id"=>"/hostedzone/XXXXXXXXXX", 
    "ttl"=>"3600", 
    "type"=>"A", 
    "value"=>[{"value"=>"1.1.1.1"}], 
    "id"=>"/hostedzone/XXXXXXXXXX" 
} 

params['value']['value'][0]['value'] 
# => "1.1.1.1" 
params['value']['value'][0].keys 
# => ["value"] 
+0

感謝。 [:value]を置くと正しい値が出力されますが、後で配列オブジェクトにする必要があるときにその変数を呼び出すと、[[ActionController :: Parameters {"value" => "1.1.1.1"} permitted:true>] "'何かご意見は? – wsizoo

+0

あなたの構造のため、ActionControllerParametersを含む配列にアクセスし、次に 'p params ['value'] ['value'] [0] ['value']' –

+0

のような値のキーにアクセスする必要がありますちょうど値よりも配列/ハッシュを取得する方法は? – wsizoo

関連する問題