Administración de Roles

Contenido

  • Administración de Roles: AJAX

    • add_role

    • rm_role

  • Creación de Roles:

    • create_role: unidad, nombre, modelo, acción

  • Demo

Administración de Roles: AJAX

  • Hacer que el controlador responda a Ajax
  • Crear un Partial y form con remote true
  • Crear el js
#app/views/admin/add_role.js.erb
$('tbody#users').append("<%= escape_javascript(
render partial: 'role', locals: {role: @role }) %>");
$('tr#<%= dom_id(@role) %>').effect('highlight');
#app/controller/admin_controller.rb
def add_role
    ...
    respond_to do |format|
       	   format.js #render add_role.js.erb
    end
end
#app/views/admin/_form.html.erb
<%= form_for Role.new, :url => {:controller => "admin",
 :action => "add_role", :format => :js, user: @user }, 
 :method => :post, :remote => true do |f| %>
    ...
    <%= f.submit %>
<%end%>

Creación de Roles:

#app/views/admin/new_role.html.erb
<% @models.each do |model| -%>
      <p>
        <%#= check_box_tag model.name  %>
        <strong><%= label_tag(model.name) %></strong>
        <div class = model.name>
          <% @actions.each do |action| %>
          <%= check_box_tag "model_ids[#{model.id}][action_ids][]" , action.id %>
            <%# action = model.id.to_s + " " + action.name  %>
            <%#= check_box_tag action, model.id %>
            <%= label_tag(action.name) %>
          <% end %>
        </div>
      </p>
<% end %>

vista

#app/controller/admin_controller.rb
def create_role
    @role = Role.new(name: params[:name], unit_id: params[:id])

    if @role.save
        params[:model_ids].each do |model|
        model.last[:action_ids].each do |action|
          Rma.create(role_id: @role.id ,model_id: model.first , action_id: action )
        end
      end
      redirect_to show_role_path(@role), notice: "Rol Exitosamente Creado" 
    end
end

Controlador

Demo

https://github.com/sespinozj/model-rol-permissions

Administración de Roles

By Sam W

Administración de Roles

  • 788