Rails から始めて、アプリケーションを作成しました。このアプリケーションでは、ユーザーを作成できるのは管理者だけです。他のユーザーをサインアップすると、チェックボックスをオンにして、ユーザーまたは管理者を作成したかどうかを選択できます。これは、私のテーブル user でブール値を作成するためです。そして、別のユーザーのタブが表示されるページがあります。このページでは、タブにチェックボックスを追加し、管理者は他のユーザーの管理者を追加または削除できます。
しかし、私はそれを作成する方法がわかりません:>
ここで私のコントローラーコード:
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