The project is in a healthy, maintained state
Raccolta di utility per semplificare costruzione cms in rails
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

Runtime

~> 1.2, >= 1.2.2
~> 2.3, >= 2.3.1
>= 7.0, < 8.0
~> 4.0, >= 4.0.0
 Project Readme

BaseEditingBootstrap

Gem Version

WIP

Installation

Add this line to your application's Gemfile:

gem "base_editing_bootstrap"

And then execute:

$ bundle

Or install it yourself as:

$ gem install base_editing_bootstrap

Then run installer:

$ bundle exec rails g base_editing_bootstrap:install

Generators

Then Install dependency (if you run base_editing_bootstrap:install you are good to go):

bundle exec rails g pundit:install

Aggiungere ad ApplicationController

  include Pundit::Authorization

Installare bootstrap e questo dipende dal sistema scelto di assets bundling.
La versione più semplice è attraverso: https://github.com/rails/cssbundling-rails
Una volta installato basta lanciare bin/rails css:install:bootstrap come da documentazione e avrete la vostra versione di boostrap installata.

Installare gem "factory_bot_rails",
Optional configurarlo correttamente in application.rb

config.generators do |g|
  g.test_framework :rspec
  g.fixture_replacement :factory_bot
  g.factory_bot dir: 'spec/factories'
end

Initializers

E' possibile configurare BaseEditingBootstrap con alcune impostazioni:

  BaseEditingBootstrap.configure do |config|
    ##
    # Controller da cui derivare poi il BaseEditingController da cui derivano 
    # tutti i controller sottostanti
    # @default "ApplicationController"
    # config.inherited_controller = 'ApplicationController'

    ##
    # Configurazione per alterare lo standard di azione post aggiornamento record
    # il default è andare nella pagina di editing del record
    # possibili valori :edit , :index
    # config_accessor :after_success_update_redirect, default: :edit

    ##
    # Configurazione per alterare lo standard di azione post creazione record
    # il default è andare nella pagina di editing del record
    # possibili valori :edit , :index  
    # config_accessor :after_success_create_redirect, default: :edit
  
  end

Usage

Utilizzo per modello base, in questo esempio prendiamo come modello Post come esempio del dummy.

  • Creare il Modello ed includere

     include BaseEditingBootstrap::BaseModel
  • La factory nelle spec deve contenere il trait with_invalid_attributes per definire la situazione di dati per record non valido. ES:

    trait :with_invalid_attributes do
     name {nil} # name dovrebbe essere obbligatorio nel modello
    end
  • Creare Controller:

      class PostsController < BaseEditingController
      end
  • Aggiungere la rotta: resources :posts

  • Creare la policy:

    class PostPolicy < BaseModelPolicy
    
    def editable_attributes
    [
    :title,
    :description
    ]
    end
    
    def permitted_attributes
    [
    :title,
    :description
    ]
    end
    
    def search_result_fields
    [:title]
    end
    end
  • [OPTIONAL] nel caso si volesse fare override dei campi della form:
    Per il campo che si vuole fare override creare un nuovo file nella cartella del modello app/views/posts/post/form_field/_NOME_CAMPO.html.erb
    al cui interno renderizzare il campo come si preferisce:

      <%# locals: (form:, field:) -%>
      <%= form.text_field(field) %>
    
  • [OPTIONAL] la medesima cosa è possibile fare con il rendering dei campi delle celle della tabella della pagina index.
    La cartella da generare in questo caso sarà: app/views/posts/post/cell_field/_NOME_CAMPO.html.erb

    <%# locals: (obj:,field:)  -%>
    <td><%= obj.read_attribute(field) %></td>
    
  • [OPTIONAL] Base overrides:
    E' possibile anche fare un override generico dei campi, sono previsti questi tipi di partial legati al tipo di dati:
    Cell Field:

    • created_at => timestamps.html.erb
    • updated_at => timestamps.html.erb
    • default => base.html.erb Form Field
    • Integer => _integer.html.erb
    • Float => _decimal.html.erb
    • Decimal => _decimal.html.erb
    • DateTime => _detetime.html.erb
    • Date => _date.html.erb
    • Enum => _enum.html.erb Per gli enum, le traduzioni dei labels di ogni valore provvengono da i18n attraverso l'helper: Utilities::EnumHelper#enum_translation il quale utilizza il nome dell'attributo con
    • Default/String => _base.html.erb

    In futuro si prevede di aggiungere automatismi per renderizzare senza l'intervento dell'utente dei campi.

  • [OPTIONAL] Search Form:
    Per poter aggiungere una form di ricerca basta aggiungere alla policy del modello in questione i campi di ricerca che verranno poi utilizzati da ransack per eseguire le ricerche
    ES:

    # file app/policies/post_policy.rb
    #...
    def search_fields
    [:title_i_cont]
    end
    #...

Contributing

Contribution directions go here.

License

The gem is available as open source under the terms of the MIT License.