首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在单选按钮中创建多个用户类型的后端?设计和导轨

如何在单选按钮中创建多个用户类型的后端?设计和导轨
EN

Stack Overflow用户
提问于 2016-12-23 16:18:24
回答 1查看 83关注 0票数 0

我对rails相当陌生。在使用STI创建多个用户类型时,我从另一个用户那里获得了一个想法。因此,在这一点上,我有两个用户类型,教师和学生,他们都显示为类教师<用户类学生<用户我使用的设计,自动创建注册(注册路径)和用户模型。

代码语言:javascript
复制
    <div class="authform">
    <%= form_for @users(resource, :as => resource_name, :url => registration_path(resource_name), :html => { :role => 'form'}) do |f| %>

然后跳到单选按钮:

代码语言:javascript
复制
    <div>
      <%= "I am a..." %>
      <%= radio_button_tag(:user, "student") %>
      <%= label_tag(:student, "student") %>
      <%= radio_button_tag(:user, "teacher") %>
      <%= label_tag(:teacher, "teacher") %>
    </div>
     <%= f.submit 'Sign Up', :class => 'button right' %>

  <% end %>
</div>

如何将其附加到后端和用户类型?这是我的user.rb

代码语言:javascript
复制
  class User < ActiveRecord::Base
  has_many :posts, dependent: :destroy

  def skip_confirmation!
   self.confirmed_at = Time.now.utc
  end

  enum role: [:user, :vip, :admin]
  after_initialize :set_default_role, :if => :new_record?

  def set_default_role
    self.role ||= :user
  end

  # Include default devise modules. Others available are:
  # :confirmable, :lockable, :timeoutable and :omniauthable
  devise :database_authenticatable, :registerable, 
  #:confirmable, 
    :recoverable, :rememberable, :trackable, :validatable 

  def to_param
     username
  end
end

这是我的用户控制器:

代码语言:javascript
复制
class UsersController < ApplicationController
  before_action :authenticate_user!
  after_action :verify_authorized

  def show
    @user = User.find(params[:id])
    authorize @user
    @posts = @user.posts
  end

  def new
    @user = User.new
    authorize @user
    redirect_to 'classrooms#index'
  end

  def update
    @user = User.find(params[:id])
    authorize @user
    if @user.update_attributes(secure_params)
      redirect_to users_path, :notice => "User updated."
    else
      redirect_to users_path, :alert => "Unable to update user."
    end
  end

  def destroy
    user = User.find(params[:id])
    # authorize @user
    user.destroy
    redirect_to users_path, :notice => "User deleted."
  end

  private

  def secure_params
    params.require(:user).permit(:role)
  end

end
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-12-23 16:56:19

我不知道你想做什么。

如果您试图发送来自单选按钮的数据,可以添加一个form_tag

在此之前,我们可能应该定义我们的controller

例如,我在user_controller.rb中定义了一个create_user_type

代码语言:javascript
复制
 def create_user_type
   byebug ## it will bind your termianl and help you to see the parameter
 end

然后编辑routes.rb,添加这一行。

代码语言:javascript
复制
post 'users/create_user_type' => 'users/create_user_type'

最后,更改您的form.html.erb

代码语言:javascript
复制
<%= form_tag users_create_user_type_url do |f| %>
  <%= radio_button_tag(:user, "student") %>
  <%= label_tag(:student, "student") %>
  <%= radio_button_tag(:user, "teacher") %>
  <%= label_tag(:teacher, "teacher") %>
  <%= submit_tag "Save!"%>
<% end %>

所以,在您的浏览器中,您可以看到

单击“保存”按钮后,您应该注意到您的终端是绑定的。

现在,您可以打印params以查看radio按钮中的数据。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41304701

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档