3

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
4

1 に答える 1