我有,当我试图用户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中是不推荐使用的。 –