ruby-on-rails - 如何将“form_tag”转换为“simple_form_for”登录方式?
问题描述
这个片段工作正常:
<%= form_tag(session_path) do |f| %>
<p>
<%= label_tag :email %>
<%= email_field_tag :email, nil %>
</p>
<p>
<%= label_tag :password %>
<%= password_field_tag :password, nil %>
</p>
<%= submit_tag "Sign in", class: 'btn-primary' %>
<% end %>
但是当我尝试simple_form_for
按照屏幕截图重构它时,它给了我错误Invalid email or password!
# sessions_controller.rb
class SessionsController < ApplicationController
def new
end
def create
if user = User.authenticate(params[:email],params[:password])
session[:user_id] = user.id
flash[:notice] = "Signed in successfully."
redirect_to user
else
flash.now[:alert] = 'Invalid email or password!'
render :new
end
end
end
我感觉线路有问题
<%= simple_form_for :session, url: session_path do |f| %>
在routes.rb
:resource :session
- 是的,它是单数,不是复数
解决方案
当您添加simple_form_for :session
表单时,开始发送包装在session
密钥中的所有参数:session: { email: 'email@email.com', password: 'password' }
. 如果您检查服务器日志,您会看到它
控制器的变化:
User.authenticate(params[:session][:email], params[:session][:password])
推荐阅读
- javascript - 从父级调用反应子功能组件上的函数
- javascript - Chrome 扩展广告拦截
- laravel - 如何在 Laravel 中以原始状态显示图像
- ruby-on-rails - Rails:WSL 的路径名问题
- google-analytics - Google Analytics 4 - 不使用 gtag.js 或 firebase 的 Measurement Protocol API
- php - 在表单中添加图像 - prestashop
- matlab - 用于添加单例维度和/或广播的语法糖
- javascript - 如何将 undefined 或 null 设置为 firebase 对象中的值?
- java - 使用规范过滤子实体 - Spring Boot
- vim - Vim 用不同的字符串替换每一行