Mój formularz rejestracyjny, który jest formularzem dla modelu Users, przyjmuje wartość ciągu dla firmy. Jednak właśnie dokonałem takiej zmiany, że użytkownicy należą do firm. Dlatego muszę przekazać obiekt firmy do modelu Users.
Chcę użyć wartości ciągu z formularza, aby uzyskać obiekt firmy:
@user.company = Company.find_by_name(params[:company])
Wydaje mi się, że powyższe działa, jednak forma przekazuje: firmę (czyli ciąg znaków) do modelu, gdy dzwonię:
@user = User.new(params[:user])
Dlatego chcę wiedzieć (i nie mogę znaleźć sposobu), aby usunąć parametr: company przed przekazaniem go do modelu użytkownika.
źródło
model_params.delete :key_name
nie działa - nie wiadomo dlaczego?assin_params = params.dup.delete(:company)
. use . nigdy nie usuwaj bezpośrednio z parametrówassign_params = params.dup; assign_params.delete(:company)
model_params
była funkcją, która wyciągnęła odpowiednie parametry zparams
. Więc kiedy jesteśdelete
zmodel_params
naprawdę po prostu usuwasz z haszu, którymodel_params
powraca.Prawdopodobnie powinieneś używać hash.except
Realizuje 2 rzeczy: pozwala wykluczyć więcej niż 1 klucz na raz i nie modyfikuje oryginalnego skrótu.
źródło
"-1"
za klucz. {"utf8" => "✓", "_method" => "patch", "autentyczność_token" => "VtY ...", "brochure" => {"title" => "Witaj świecie", "profilings_attributes" => {"-1" => {"member_profile_id" => "3"}, "0" => {"percent" => "10,0", "description" => "Jakiś opis!", "_Destroy" = > "false", "id" => "10"}, "1" => {...}}, "sponsings_attributes" => {"-1" => {"sponsor_id" => "2"}, "0" => {"brochure_id" => "Prawidłowym sposobem osiągnięcia tego jest użycie
strong_params
W ten sposób masz większą kontrolę nad tym, które parametry powinny zostać przekazane do modelu
źródło
spowoduje to usunięcie parametrów z adresu URL
źródło
Aby móc usunąć, możesz zrobić notatkę :
Teraz możesz:
źródło