我从 Rails 开始,并创建了一个应用程序。在这个应用程序中,管理员是唯一可以创建用户的人,当他注册其他用户时,他可以选中一个复选框以选择他是创建用户还是管理员,因为在我的表用户中,我创建了一个布尔值。他有一个页面,他可以在其中看到不同用户的选项卡。在此页面中,我想在我的选项卡中添加一个复选框,管理员可以为其他用户添加或删除管理员。
但我不知道如何创建它:>
这是我的控制器代码:
class RegistrationsController < Devise::RegistrationsController
before_filter :authenticate_user!, :redirect_unless_admin, :except => [:edit]
prepend_before_filter :authenticate_scope!, :only => [:edit, :update, :destroy]
def create
@user = User.create
build_resource
respond_to do |format|
format.html {redirect_to :controller => 'users', :action => 'index'}
format.js
end
if resource.save
redirect_to users_index_path
flash[:succes] = "Utilisateur cree"
else
clean_up_passwords resource
respond_with resource
flash[:avertissement] = "Veuillez remplir tout les champs."
end
end
def new
@user = User.new
end
这是我的 index.html.erb 代码:
<% btn_section = image_tag('btn-section.png') %>
<% btn_admin = image_tag('checkmark.png') %>
<% btn_noadmin = image_tag('close.png') %>
<% btn_eye = image_tag('eye.png') %>
<% btn_edit = image_tag('pencil.png')%>
<% btn_remove = image_tag ('remove.png') %>
<div class="section-admin">
<h1>Users</h1>
<div class="btn-section-size"> <%= link_to 'Nouvelle Utilisateur', new_user_registration_path ,:class => "btn btn-primary submit-deco"%></div>
<table class="user-index">
<colgroup>
<col class="size-Email">
<col class="size-admin"
<col class="size-action">
</colgroup>
<thead> <!-- En-tête du tableau -->
<tr>
<th>Email</th>
<th>Admin</th>
<th width = "70 px">Actions</th>
</tr>
</thead>
<% @users.each do |user| %>
<tbody>
<!-- Boucle pour afficher les articles dans le tableau de chaque section -->
<tr>
<td><%= user.email %> </td>
<%= simple_form_for(resource_name, :remote => true, :as => resource, :url => user_registration_path()) do |f| %>
<td><%= f.check_box (:admin), :id => "IsAdminSelect" %>
<%#if user.admin? %>
<%#= btn_admin %>
<%# else %>
<%#= btn_noadmin %>
<%#end %><% end %></td>
<td class="actiontab"> <%#= link_to btn_edit, edit_user_registration_path(user) %>
<%= link_to t('.destroy', :default =>(btn_remove)),user_registration_path(:id => user.id),
:method => :delete,
:data => { :confirm => t('.confirm', :default => t("helpers.link.confirm", :default => 'Etes vous certains ?')) } %></td>
</tr>
<% end %>
</tbody>
</table>
</div>
和我的注册新代码:
<div class="section-index">
<h2 class="title-edit-new">Inscription</h2>
<%= simple_form_for(resource_name, :as => resource, :url => user_registration_path()) do |f| %>
<%= f.error_notification %>
<ul class="form">
<div class="inputs">
<li> <%= f.label :email %></li>
<li><%= f.email_field :email, :required => true, :class =>'email-input', :autofocus => true %></li>
<li> <%= f.label :password %></li>
<li><%= f.password_field :password, :class =>'password-input', :required => true %></li>
<li class="passwordconfirm"> <%= f.label :password_confirmation %></li>
<li> <%= f.password_field :password_confirmation, :class =>'passwordconfirm-input', :required => true %></li>
</div>
<li>
<%= f.label :admin%>
<%= f.check_box (:admin) %></li>
<div class="actions">
<li> <%= f.button :submit, "Inscription", :class => 'btn btn-primary submit-input'%></li>
</div>
<% end %>
</ul>
</div>
我希望你能帮助我。抱歉我的英语不好,如果您需要,我会留在这里添加更多信息。
编辑 1:
我像这样开始我的脚本
<script type="text/javascript">
$(document).ready(function(){
$(".admin_select").click(function(){
alert("/users/"+$(this).data("user-id")+"/toggle(:admin)");
});
});
</script>
并像这样编辑我的索引视图
<td><%= f.check_box :admin, :checked => user.admin?, :class => "admin_select",
:data => { :user_id => user.id } %>
现在我可以看到谁是管理员。所以我只需要在脚本中实现 toggle(:admin) 。
编辑 2:
我的 routes.rb 文件
Redmine::Application.routes.draw do
get "users/index"
root to: "sections#show", :id => '29', :division_id => '5'
resources :users do
member do
put :toggle_admin
end
end
resources :dashboard
resources :divisions do
resources :sections do
resources :articles
end
end
devise_for :users, :path_names => { :sign_in => "login"}, :controllers => { :registrations => 'registrations'}
devise_scope :user do
get "sign_in", :to =>"devise/sessions#new"
end
end