在Devise的新注册表中添加单选按钮 您所在的位置:网站首页 snip是什么意思 在Devise的新注册表中添加单选按钮

在Devise的新注册表中添加单选按钮

#在Devise的新注册表中添加单选按钮| 来源: 网络整理| 查看: 265

提问开始:

我的Ruby on Rails应用程序使用Devise进行用户身份验证。虽然我在向默认注册表单添加字段时没有遇到任何问题,但我是一个新手,在使用单选按钮方面没有任何经验。

每个:user都是一个:teacher或:student (实际上,在此基础上user表是自联接的)。因此,当前的工作注册要求注册人员在“位置”文本字段中键入“学生”或“教师”。当然,即使功能强大,它也不是用户友好的,所以我想用两个单选按钮替换文本字段。

我尝试过的:

在users.rb模型中,我添加了一个常量:

POSITIONS = [ ["student", "Student"], ["teacher", "Teacher] ]

对于devise/registrations/new.html.erb,我将字段代码更改为:

'position-button' %>

然后我转到了控制器上。据我所知,如果Devise不是我的应用程序的一部分,我会调用users_controller.rb中的POSITIONS常量:

def new @user = User.new @positions_collection = User::POSITIONS end

然而,使用Devise自动生成的users_controller.rb在def new中没有任何用处,而是似乎依赖于文件底部的自定义方法来处理新用户:

def resource_name :user end def resource @resource ||= User.new end def resource_class User end def devise_mapping @devise_mapping ||= Devise.mappings[:user] end

因此,我开始尝试,从简单地将@positions_collection = User::POSITIONS添加到def new开始。重新加载注册页面返回以下错误:"NoMethodError in Devise::Registrations#new snip where第30行引发:未定义nil:NilClass的方法'map‘“。无论我尝试将@positions_collection = User::POSITIONS粘贴到控制器中的哪个位置,甚至是在自定义方法中,甚至是在尝试与@user = User.new结合使用时,这个错误都会一次又一次地出现。

(第30行引用了视图文件中的,我敢打赌,这表明@positions_collection是绊脚石。)

有谁有关于如何继续的想法吗?

回答开始:得票数 0

你使用nil类的问题是因为没有在"create“方法中定义:

@positions_collection = User::POSITIONS

最简单的解决方案是删除此变量,并在视图中直接使用User::POSITIONS。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有