我对rails相当陌生。在使用STI创建多个用户类型时,我从另一个用户那里获得了一个想法。因此,在这一点上,我有两个用户类型,教师和学生,他们都显示为类教师<用户类学生<用户我使用的设计,自动创建注册(注册路径)和用户模型。
<div class="authform">
<%= form_for @users(resource, :as => resource_name, :url => registration_path(resource_name), :html => { :role => 'form'}) do |f| %>然后跳到单选按钮:
<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
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这是我的用户控制器:
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发布于 2016-12-23 16:56:19
我不知道你想做什么。
如果您试图发送来自单选按钮的数据,可以添加一个form_tag。
在此之前,我们可能应该定义我们的controller。
例如,我在user_controller.rb中定义了一个create_user_type
def create_user_type
byebug ## it will bind your termianl and help you to see the parameter
end然后编辑routes.rb,添加这一行。
post 'users/create_user_type' => 'users/create_user_type'最后,更改您的form.html.erb
<%= 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按钮中的数据。

https://stackoverflow.com/questions/41304701
复制相似问题