Wie bekomme ich die Parameter in Ruby on Rails? - Rubin auf Schienen, Rubin

Ich möchte den Wert von material_sort_id erhalten

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"=>"查询"}

Das ist mein Code:

puts params[:material_sort_id].present?

Ich wurde falsch. Wie bekomme ich es?

Antworten:

6 für die Antwort № 1
params[:material][:material_sort_id]

Du kannst es so bekommen


1 für die Antwort № 2
Loop
{
//Code
puts params[:material][:material_sort_id];
}

1 für die Antwort № 3

Laut den Protokollen

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

Ihre params[:material_sort_id] ist in der "material" Schlüssel, damit Sie nicht direkt zugreifen können. Es ist etwas wie Sie haben 2 Hash der 1. Hash-Schlüssel enthält einen anderen Hash

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

Um auf Sie zuzugreifen, können Sie Folgendes verwenden.

params[:material][:material_sort_id]

Um zu überprüfen, ob es vorhanden ist oder nicht, können Sie folgendes verwenden.

params[:material][:material_sort_id].present?

0 für die Antwort № 4

Es könnte sein, dass die URL selbst keinen Material-Hash hat. In diesem Fall können Sie schreiben

params[:material].try(:material_sort_id)

Im obigen Fall wird material_sort_id nur dann auf material abgefragt, wenn der Material-Hash nicht null ist. Wenn es nicht Null ist, wird es das erwartete Ergebnis zurückgeben, andernfalls wird anstelle eines Fehlers ein false zurückgegeben


Speisekarte