Je vais avoir un problème quand je suis en train de params.require utilisateur (...) permis (...)Comment les rails params sont-ils créés?
Dans ma demande, j'ai reçu le suivi dic param.
{"utf8"=>"✓",
"authenticity_token"=>"Vatzcb5tgTu2+wL1t6Of+FbIK8Ibp+tM03Naai4b2OU=",
"/login"=>{"username_or_email"=>"jonatasteixeira",
"password"=>"[FILTERED]"},
"commit"=>"Save /login" }
Je voudrais savoir pourquoi la clé my a reçu le nom "/ login".
Mon point de vue:
<h1>Login</h1>
<%= form_for(login_path) do |f| %>
<div class="field">
<%= f.label :username_or_email %><br>
<%= f.text_field :username_or_email %>
</div>
<div class="field">
<%= f.label :password %><br>
<%= f.password_field :password %>
</div>
<div class="actions">
<%= f.submit %>
</div>
<% end %>
<%= link_to 'Back', root_path %>
Dans mon contrôleur
class SessionsController < ApplicationController
# GET /login
def new
@user = User.new
end
# POST /login
def create
@user = User.find_by_emai(session_params[:username_or_email]) || User.find_by_username(session_params[:username_or_email])
if @user && @user.authenticate(session_params[:password])
session[:current_user_id] = @user.id
flash[:notice] = 'You are logged in'
else
flash[:notice] = 'Invalid password, username or email'
end
end
private
# Never trust parameters from the scary internet, only allow the white list through.
def session_params
logger.info :login
params.require("/login").permit(:username_or_email, :password)
end
end
Je ne veux pas utiliser "/ login" comme la clé, je voudrais utiliser: connexion. Quelqu'un sait comment je pourrais l'ajuster?
Merci!
OK .. Je l'ai fait ajuste mais. Je reçois cette erreur: "param est manquant ou la valeur est vide: login" – JonatasTeixeira
Si vous rechargez le formulaire et inspectez l'un des champs, cela ressemble-t-il à ceci? '' –
P.S. Vous devriez utiliser 'find_by (email: ...)' et 'find_by (nom d'utilisateur: ...)' dans Rails 4. Je pense que les finders dynamiques comme 'find_by_email' et' find_by_username' sont obsolètes dans la version 4. –