2015-05-28 3 views
0

Я хочу, чтобы получить значение material_sort_idКак получить параметры в Ruby on Rails?

Started GET "/materials?utf8=%E2%9C%93&material%5Bmaterial_sort_id%5D=1&material%5Bbrand_id%5D=1&commit=%E6%9F%A5%E8%AF%A2" for 127.0.0.1 at 2015-05-28 16:06:34 +0800 
Processing by MaterialsController#index as HTML 
     Parameters: {"utf8"=>"✓", "material"=>{"material_sort_id"=>"1", "brand_id"=>"1"}, "commit"=>"查询"} 

Это мой код:

puts params[:material_sort_id].present? 

я получил ложь. Как мне это получить?

ответ

6
params[:material][:material_sort_id] 

Вы можете получить его, как этот

1

Согласно журналам

"material" => {"material_sort_id"=>"1", "brand_id"=>"1"}, "commit"=>"查询"} 

Ваш params[:material_sort_id] находится внутри ключа "material", так что вы не можете получить доступ непосредственно. Это то, что у вас есть два хэша первый ключ Hash содержит другой Hash

e.g { "a" => { "b"=> "1", "c" => "2" } } 

Для доступа можно использовать следующее.

params[:material][:material_sort_id] 

Чтобы проверить, существует ли его настоящее или нет, вы можете использовать следующее.

params[:material][:material_sort_id].present? 
1
Loop 
{ 
    //Code 
    puts params[:material][:material_sort_id]; 
} 
+1

Хорошие ответы дают объяснение кода –

0

Возможно, возможно, что URL не имея самого материала хэш. В этом случае вы можете написать

params[:material].try(:material_sort_id) 

В вышеописанном случае он будет запрашивать material_sort_id на материал, только если материал хэш не равен нулю. Если это не ноль, он вернет ожидаемый результат, иначе возвращает false вместо любой ошибки

Смежные вопросы