【问题标题】:Using devise form inside Rails custom form在 Rails 自定义表单中使用设计表单
【发布时间】: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


【解决方案1】:

查看 Digi_Cazter 的链接,然后在检查 signed_in 后添加表单?

在你的 create 方法中应该可以这样:

   @user = User.new(:email => 'test@example.com', :password => 'password',    #values from params   
   :password_confirmation => 'password')
   @user.save
   sign_in @user  #if you want to do this

       if @book.save
            redirect_to :action => 'list'
        else
            @subjects = Subject.find(:all)
            render :action => 'new'
        end 

【讨论】:

    猜你喜欢
    • 2013-03-10
    • 2011-09-05
    • 2012-09-28
    • 1970-01-01
    • 2010-11-17
    • 1970-01-01
    • 1970-01-01
    • 2011-07-09
    • 1970-01-01
    相关资源
    最近更新 更多