【发布时间】:2012-05-17 19:29:00
【问题描述】:
我在当前项目中使用 Devise gem 进行身份验证。我遇到了在自定义表单中使用设计注册和登录表单的问题,我不确定如何在我的项目中实现它。
此自定义表单有 20-25 个字段,如果当前用户未登录,我想在同一视图中包含设备登录和注册表单。所以当用户点击表单的保存按钮时,控制器将首先验证或注册用户,然后再保存表单。
class BookController < ApplicationController
def new
@book = Shop::Book.new
end
def create
@book = Book.new(params[:book])
# TODO::
# validate / register the user if not currently logged-in
if @book.save
redirect_to :action => 'list'
else
@subjects = Subject.find(:all)
render :action => 'new'
end
end
end
【问题讨论】:
-
您可以在一个视图中显示两个表单,然后对登录/注册表单使用 ajax 请求,这样用户就无需离开页面即可登录。我能想到的唯一其他方法是在设计和您的自定义表单数据之间建立关系并使用 form_for。
-
我考虑过先制作 form_remote_tag 用于登录和注册,但它存在一些可用性问题。此表单将只有一个“保存”按钮,它将首先登录/注册用户,然后继续保存模型。
-
在视图上使用 2 个表单是否对您有用,然后创建一个保存提交按钮来提交两个表单 ajax 样式,只需在 $.ajax 选项中指定 async: false 以便它会先完成第一个请求,然后再进行自定义表单吗?
标签: ruby-on-rails forms devise