Nic dziwnego, params[:test] jest nilem, nie jest ustalone, a na tym nilu próbujesz odczytać wartość pod kluczem [:banana]
Ogólnie jest tak, że w wysyłaniu formularza masz hasha z, między innymi, kluczem z nazwą formularza, a w nim klucze z wartościami poszczególnych inputów.
{ test: { banana: wartość } }
czyli idąc dalej, jeśli chcesz odczytać wartość :banana, musisz najpierw sprawdzić, czy istnieje :test, na przykład:
Sposobów jest masa. Kłócenie się teraz który fajniejszy nie ma zbytnio sensu. Mnie np. w tym przypadku od wersji z fetch bardziej sie podoba wersja @michalg
@krzysiek1507, już pomijając to, co ja z tym robię, pewnie w większości przypadków takie dane ładowane są do kontenerów, tablic, procesowane według potrzeb.
Nie wiem czy do końca ogarniam to co próbujesz zrobić, ale w Railsach parametry filtrujesz sobie z użyciem Stronga Params a nastepnie takich odfiltrowanych parametrów używasz jako argumentu do metody jakiegoś obiektu w celu jego zaktualizowania czy do jakiejś klasy w celu stworzenia nowego obiektu. To co będziesz robił z tymi danymi już nie leży w kwestii kontrolera. On ma je tylko odebrać -> odfiltrować -> przekazać.
W moim konkretnym przypadku, staram się zrobić trylion inputów, wyciągam dane z webservice’ów (gem savon) i przekazuje do kontrolera ( w ramach testów), z założeniem - że dane nie są w żaden sposób filtrowane i user może wprowadzić co mu się podoba, lub pozostawić input pusty.