我有,當我試圖用戶params.require(......)的故障許可證(...)如何創建rails參數?
在我的應用程序收到後續PARAM DIC:
{"utf8"=>"✓",
"authenticity_token"=>"Vatzcb5tgTu2+wL1t6Of+FbIK8Ibp+tM03Naai4b2OU=",
"/login"=>{"username_or_email"=>"jonatasteixeira",
"password"=>"[FILTERED]"},
"commit"=>"Save /login" }
我想知道爲什麼我的密鑰收到「/登錄」名稱。
我的觀點:
<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 %>
在我的控制器
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
我不想使用 「/登錄」 作爲關鍵,我想用:登錄。有人知道我怎麼調整它?
謝謝!
行..我做了這個調整,但是。我得到這個錯誤:「參數丟失或值是空的:登錄」 – JonatasTeixeira
如果您重新加載窗體並檢查其中一個字段,它是否看起來像這樣? '' –
P.S.你應該在Rails 4中使用'find_by(email:...)'和'find_by(username:...)'。我認爲像find_by_email和find_by_username這樣的動態查找器在版本4中是不推薦使用的。 –