Mon formulaire d’inscription, qui est un formulaire pour le modèle Utilisateurs, prend une valeur de chaîne pour la société. Cependant, je viens de faire un changement tel que les utilisateurs appartiennent à des entresockets. Par conséquent, je dois transmettre un object de la société au modèle Utilisateurs.
Je veux utiliser la valeur de chaîne du formulaire pour obtenir un object de la société:
@user.company = Company.find_by_name(params[:company])
Je crois que le travail ci-dessus fonctionne, mais la forme transmet la: company (qui est la chaîne) dans le modèle lorsque j’appelle:
@user = User.new(params[:user])
Par conséquent, je veux savoir (et ne trouve pas comment) pour supprimer le paramètre: company avant de le transmettre au modèle User.
Vous pouvez supprimer une paire clé / valeur d’un hachage en utilisant Hash#delete
:
params.delete :company
Si elle est contenue dans params [: user], alors vous utiliseriez ceci:
params[:user].delete :company
Vous devriez probablement utiliser hash.except
class MyController < ApplicationController def explore_session_params params[:explore_session].except(:account_id, :creator) end end
Il accomplit 2 choses: vous permet d'exclure plus d'une clé à la fois et ne modifie pas le hachage d'origine.
respond_to do |format| if params[:company].present? format.html {redirect_to(:controller=>:shopping, :action=>:index)} else format.html end
cela va supprimer les parameters de l’URL
La manière correcte d’y parvenir est d’utiliser strong_params
class UsersController < ApplicationController def create @user = User.new(user_params) end private def user_params params.require(:user).permit(:name, :age) end end
De cette façon, vous avez plus de contrôle sur les parameters à transmettre au modèle