From 737dd4111aafc464e831943b13f6a5d0e21cf277 Mon Sep 17 00:00:00 2001 From: Nolwenn LAVIELLE Date: Mon, 3 Feb 2020 14:50:48 +0100 Subject: [PATCH] =?UTF-8?q?Initialisation=20de=20la=20DB=20avec=20des=20do?= =?UTF-8?q?nn=C3=A9es=20et=20affichage=20du=20tableau=20des=20livres?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Gemfile.lock | 14 ++--- ajax_rails_table.adoc | 57 +++++++++++++++++- app/assets/javascripts/livres.coffee | 3 + app/assets/stylesheets/livres.scss | 3 + app/controllers/livres_controller.rb | 5 ++ app/helpers/livres_helper.rb | 2 + app/models/livre.rb | 2 + .../views/livres/.index.html.erb.swp | Bin 12288 -> 12288 bytes app/views/livres/index.html.erb | 29 +++++++++ config/routes.rb | 1 + db/migrate/20200203130314_create_livres.rb | 13 ++++ db/schema.rb | 25 ++++++++ db/seeds.rb | 39 ++++++------ test/controllers/livres_controller_test.rb | 9 +++ test/fixtures/livres.yml | 15 +++++ test/models/livre_test.rb | 7 +++ 16 files changed, 197 insertions(+), 27 deletions(-) create mode 100644 app/assets/javascripts/livres.coffee create mode 100644 app/assets/stylesheets/livres.scss create mode 100644 app/controllers/livres_controller.rb create mode 100644 app/helpers/livres_helper.rb create mode 100644 app/models/livre.rb rename db/.seeds.rb.swp => app/views/livres/.index.html.erb.swp (92%) create mode 100644 app/views/livres/index.html.erb create mode 100644 db/migrate/20200203130314_create_livres.rb create mode 100644 db/schema.rb create mode 100644 test/controllers/livres_controller_test.rb create mode 100644 test/fixtures/livres.yml create mode 100644 test/models/livre_test.rb diff --git a/Gemfile.lock b/Gemfile.lock index f172b92..ba9bd0f 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -57,8 +57,8 @@ GEM popper_js (>= 1.14.3, < 2) sassc-rails (>= 2.0.0) builder (3.2.4) - byebug (11.1.0) - capybara (3.30.0) + byebug (11.1.1) + capybara (3.31.0) addressable mini_mime (>= 0.1.3) nokogiri (~> 1.8) @@ -86,7 +86,7 @@ GEM erubi (1.9.0) eventmachine (1.2.7) execjs (2.7.0) - ffi (1.12.1) + ffi (1.12.2) formatador (0.2.5) globalid (0.4.2) activesupport (>= 4.2.0) @@ -127,13 +127,13 @@ GEM loofah (2.4.0) crass (~> 1.0.2) nokogiri (>= 1.5.9) - lumberjack (1.1.1) + lumberjack (1.2.1) mail (2.7.1) mini_mime (>= 0.1.1) marcel (0.3.3) mimemagic (~> 0.3.2) method_source (0.9.2) - mimemagic (0.3.3) + mimemagic (0.3.4) mini_mime (1.0.2) mini_portile2 (2.4.0) minitest (5.14.0) @@ -152,7 +152,7 @@ GEM method_source (~> 0.9.0) public_suffix (4.0.3) puma (3.12.2) - rack (2.1.1) + rack (2.1.2) rack-livereload (0.3.17) rack rack-test (1.1.0) @@ -189,7 +189,7 @@ GEM rerun (0.13.0) listen (~> 3.0) ruby_dep (1.5.0) - rubyzip (2.0.0) + rubyzip (2.2.0) sass (3.7.4) sass-listen (~> 4.0.0) sass-listen (4.0.0) diff --git a/ajax_rails_table.adoc b/ajax_rails_table.adoc index b0124b1..cf5401f 100644 --- a/ajax_rails_table.adoc +++ b/ajax_rails_table.adoc @@ -15,7 +15,7 @@ Préparation de la migration par création de la table Livres : [source, sh] ---- -bin/rails g migration livres titre:string auteur:string synopsis:text style:string isbn:integer +bin/rails g model livres titre:string auteur:string synopsis:text style:string isbn:integer ---- Préparation des gems : @@ -123,7 +123,7 @@ Migration de la base de données avec les données : [source, bash] ---- -bin/rake db:create db:seed +bin/rake db:create db:migrate db:seed ---- Lancement de l’application : @@ -133,6 +133,59 @@ Lancement de l’application : bin/rails s ---- +Ça marche, on peut arrêter à tout moment le serveur avec la combinaison de touches contrôle+D. + +== Tableau des livres + +[source, bash] +---- +bin/rails g controller Livres index +---- + +[source, ruby] +---- +# /app/controllers/livres_controller.rb +class LivresController < ApplicationController + def index + @livres = Livre.all + end +end +---- + +[source, ruby] +---- +# /app/views/livres/index.html +

Tableau de mes livres

+ +<% if @livres.size > 0 %> + + + + + + + + + + + + + + <% @livres.each do |livre| %> + + + + + + + + <% end %> + +
TitreAuteurSynopsisStyleISBN
<%= livre.titre %><%= livre.auteur %><%= livre.synopsis[0..120] %><%= livre.style %><%= livre.isbn %>
+ +<% end %> +---- + == Sources d’inspiration * https://stackoverflow.com/questions/23926204/updating-table-data-in-rails-using-ajax diff --git a/app/assets/javascripts/livres.coffee b/app/assets/javascripts/livres.coffee new file mode 100644 index 0000000..24f83d1 --- /dev/null +++ b/app/assets/javascripts/livres.coffee @@ -0,0 +1,3 @@ +# Place all the behaviors and hooks related to the matching controller here. +# All this logic will automatically be available in application.js. +# You can use CoffeeScript in this file: http://coffeescript.org/ diff --git a/app/assets/stylesheets/livres.scss b/app/assets/stylesheets/livres.scss new file mode 100644 index 0000000..7ce21f9 --- /dev/null +++ b/app/assets/stylesheets/livres.scss @@ -0,0 +1,3 @@ +// Place all the styles related to the Livres controller here. +// They will automatically be included in application.css. +// You can use Sass (SCSS) here: http://sass-lang.com/ diff --git a/app/controllers/livres_controller.rb b/app/controllers/livres_controller.rb new file mode 100644 index 0000000..0fcf46d --- /dev/null +++ b/app/controllers/livres_controller.rb @@ -0,0 +1,5 @@ +class LivresController < ApplicationController + def index + @livres = Livre.all + end +end diff --git a/app/helpers/livres_helper.rb b/app/helpers/livres_helper.rb new file mode 100644 index 0000000..8b51735 --- /dev/null +++ b/app/helpers/livres_helper.rb @@ -0,0 +1,2 @@ +module LivresHelper +end diff --git a/app/models/livre.rb b/app/models/livre.rb new file mode 100644 index 0000000..0d14bbf --- /dev/null +++ b/app/models/livre.rb @@ -0,0 +1,2 @@ +class Livre < ApplicationRecord +end diff --git a/db/.seeds.rb.swp b/app/views/livres/.index.html.erb.swp similarity index 92% rename from db/.seeds.rb.swp rename to app/views/livres/.index.html.erb.swp index f7fc1ddb90624c024fe258f0ae38ed3fb8a2a570..f63c8b4b54fbbda7567f45c87de1542a98dac7dc 100644 GIT binary patch literal 12288 zcmeI2y>HV%7{=c+b!kC-jEJKsBX*K58C(kxO9v2A0}`sJbjDZNm77GqOKDIAI}!sc zE9|HXeu3>%wo>y5xlhXn+Q2fCgxQ255i=Xn+Q2 zfCgybA2gt2k+mg}PoVh!fBgIZ+gXvX;3N0|-h+4GEqDorU=!R19#{dFz(ueKek_X| zfkW^DJOry?83_1^{l0_G;0P4^e*qjcKm#;D12jMbG(ZD1Km#;D1M>|8K|`5dtQw(+ zQh{HdrVjD6ETVoqstS~o#$vG;=+4KhW$ofHXsoI71h$vjsE6C4DgJwtb)(G8?;7>` z1Do2-rsuWV%|~-zpoh*3^SNy!AUA)zEPbg_l$m=sJO2V%K8BJmMU}Qs49Gy z7(IzQ?I&j|xb?Vubn`OM&`EHTt*XcDpbuPmjp>G>=wuB^-#q|?HXHsrZ(`gBFE68&$$2q literal 12288 zcmeI%&r8EF6bJA(@9Izx#Dmcu>O|YAm*Gu3i4#1iM(SKf*u3lV|?{ zFaBRHtworqD(03vSnqYIEDTableau de mes livres + +<% if @livres.size > 0 %> + + + + + + + + + + + + + + <% @livres.each do |livre| %> + + + + + + + + <% end %> + +
TitreAuteurSynopsisStyleISBN
<%= livre.titre %><%= livre.auteur %><%= livre.synopsis[0..120] %><%= livre.style %><%= livre.isbn %>
+ +<% end %> diff --git a/config/routes.rb b/config/routes.rb index 787824f..70a5f0a 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -1,3 +1,4 @@ Rails.application.routes.draw do + get 'livres/index' # For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html end diff --git a/db/migrate/20200203130314_create_livres.rb b/db/migrate/20200203130314_create_livres.rb new file mode 100644 index 0000000..df3821a --- /dev/null +++ b/db/migrate/20200203130314_create_livres.rb @@ -0,0 +1,13 @@ +class CreateLivres < ActiveRecord::Migration[5.2] + def change + create_table :livres do |t| + t.string :titre + t.string :auteur + t.text :synopsis + t.string :style + t.integer :isbn + + t.timestamps + end + end +end diff --git a/db/schema.rb b/db/schema.rb new file mode 100644 index 0000000..4a17921 --- /dev/null +++ b/db/schema.rb @@ -0,0 +1,25 @@ +# This file is auto-generated from the current state of the database. Instead +# of editing this file, please use the migrations feature of Active Record to +# incrementally modify your database, and then regenerate this schema definition. +# +# Note that this schema.rb definition is the authoritative source for your +# database schema. If you need to create the application database on another +# system, you should be using db:schema:load, not running all the migrations +# from scratch. The latter is a flawed and unsustainable approach (the more migrations +# you'll amass, the slower it'll run and the greater likelihood for issues). +# +# It's strongly recommended that you check this file into your version control system. + +ActiveRecord::Schema.define(version: 2020_02_03_130314) do + + create_table "livres", force: :cascade do |t| + t.string "titre" + t.string "auteur" + t.text "synopsis" + t.string "style" + t.integer "isbn" + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + end + +end diff --git a/db/seeds.rb b/db/seeds.rb index 61c454e..7f08cb4 100644 --- a/db/seeds.rb +++ b/db/seeds.rb @@ -5,31 +5,34 @@ Livre.create( style: 'Science-Fiction', isbn: 2277125105 ) + Livre.create( - titre: 'Dune', - auteur: 'Frank Herbert', - synopsis: 'Il n’y a pas, dans tout l’Empire, de planète plus inhospitalière que Dune. Partout des sables à perte de vue. Une seule richesse : l’épice de longue vie, née du désert, et que tout l’univers achète à n’importe quel prix. Richesse très convoitée : quand Leto Atréides reçoit Dune en fief, il flaire le piège. Il aura besoin des guerriers Fremen qui, réfugiés au fond du désert, se sont adaptés à une vie très dure en préservant leur liberté, leurs coutumes et leur foi mystique. Ils rêvent du prophète qui proclamera la guerre sainte et qui, à la tête des commandos de la mort, changera le cours de l’histoire. Cependant les Révérendes Mères du Bene Gesserit poursuivent leur programme millénaire de sélection génétique ; elles veulent créer un homme qui concrétisera tous les dons latents de l’espèce. Tout est fécond dans ce programme, y compris ses défaillances. Le Messie des Fremen est-il déjà né dans l’Empire ?', - style: 'Science-Fiction', + titre: 'Dune', + auteur: 'Frank Herbert', + synopsis: 'Il n’y a pas, dans tout l’Empire, de planète plus inhospitalière que Dune. Partout des sables à perte de vue. Une seule richesse : l’épice de longue vie, née du désert, et que tout l’univers achète à n’importe quel prix. Richesse très convoitée : quand Leto Atréides reçoit Dune en fief, il flaire le piège. Il aura besoin des guerriers Fremen qui, réfugiés au fond du désert, se sont adaptés à une vie très dure en préservant leur liberté, leurs coutumes et leur foi mystique. Ils rêvent du prophète qui proclamera la guerre sainte et qui, à la tête des commandos de la mort, changera le cours de l’histoire. Cependant les Révérendes Mères du Bene Gesserit poursuivent leur programme millénaire de sélection génétique ; elles veulent créer un homme qui concrétisera tous les dons latents de l’espèce. Tout est fécond dans ce programme, y compris ses défaillances. Le Messie des Fremen est-il déjà né dans l’Empire ?', + style: 'Science-Fiction', isbn: 2221026020 ) + Livre.create( - titre: 'Le bureau des atrocités', - auteur: 'Charles Stross', - synopsis: 'On vous a menti sur toute l’histoire contemporaine. Durant la Seconde Guerre mondiale, les nazis ont failli l’emporter grâce à leurs sacrifices humains et leurs évocations des puissances ténébreuses qui rôdent derrière la porte d’autres univers. L’informaticien Bob Howard (dont le nom semble inspiré du premier prénom de H. P. Lovecraft) a été engagé de force au Bureau des Atrocités, dit aussi la Laverie Centrale, parce qu’il a eu le malheur d’explorer des archives qui auraient dû être effacées. Et d’y apprendre la thaumaturgie mathématique. En effet, la Laverie, le plus secret des services secrets britanniques, veille à ce que certains théorèmes qui ouvrent l’accès sur d’autres univers ne soient jamais redécouverts. Elle enquête accessoirement sur tous les phénomènes étranges aux fins de les résorber. Ce qui n’exclut pas la bureaucratie la plus tatillonne. Howard est l’un de ses agents qualifiés action. Précisément, il lui faut aller aux Etats-Unis récupérer un chercheur auquel semblent s’intéresser des terroristes. Une chercheuse plutôt, rousse aussi flamboyante qu’intelligente. Et Howard se retrouve sur la piste de l’Ahnenerbe, le plus mystérieux des organismes nazis, qui aurait survécu un demi-siècle sur un autre monde, dans un autre univers. Grâce peut-être à l’aide d’entités à côté desquelles Cthulhu est un gentil mickey. Issu d’un croisement improbable entre James Hadley Chase, Ian Fleming et H.-P. Lovecraft, X-Files et Men in Black, ce roman déplace les frontières entre genres. Et Charles Stross s’y montre désopilant autant que terrifiant.', - style: 'Science-Fiction', + titre: 'Le bureau des atrocités', + auteur: 'Charles Stross', + synopsis: 'On vous a menti sur toute l’histoire contemporaine. Durant la Seconde Guerre mondiale, les nazis ont failli l’emporter grâce à leurs sacrifices humains et leurs évocations des puissances ténébreuses qui rôdent derrière la porte d’autres univers. L’informaticien Bob Howard (dont le nom semble inspiré du premier prénom de H. P. Lovecraft) a été engagé de force au Bureau des Atrocités, dit aussi la Laverie Centrale, parce qu’il a eu le malheur d’explorer des archives qui auraient dû être effacées. Et d’y apprendre la thaumaturgie mathématique. En effet, la Laverie, le plus secret des services secrets britanniques, veille à ce que certains théorèmes qui ouvrent l’accès sur d’autres univers ne soient jamais redécouverts. Elle enquête accessoirement sur tous les phénomènes étranges aux fins de les résorber. Ce qui n’exclut pas la bureaucratie la plus tatillonne. Howard est l’un de ses agents qualifiés action. Précisément, il lui faut aller aux Etats-Unis récupérer un chercheur auquel semblent s’intéresser des terroristes. Une chercheuse plutôt, rousse aussi flamboyante qu’intelligente. Et Howard se retrouve sur la piste de l’Ahnenerbe, le plus mystérieux des organismes nazis, qui aurait survécu un demi-siècle sur un autre monde, dans un autre univers. Grâce peut-être à l’aide d’entités à côté desquelles Cthulhu est un gentil mickey. Issu d’un croisement improbable entre James Hadley Chase, Ian Fleming et H.-P. Lovecraft, X-Files et Men in Black, ce roman déplace les frontières entre genres. Et Charles Stross s’y montre désopilant autant que terrifiant.', + style: 'Science-Fiction', isbn: 2253123684 ) + Livre.create( - titre: 'La mythologie du monde celte', - auteur: 'Claude Sterckx', - synopsis: 'Mystérieux Celtes ? Oui et non… Oui parce qu’on les croit généralement enveloppés d’une aura hors du commun… Non, parce que les chercheurs ont mis au jour bien des aspects de leur personnalité et de leur mode de vie… Oui encore, parce que ces travaux restent trop mal connus et que, trop souvent, des élucubrations alléchantes mais largement fantasmatiques tiennent le devant de la scène… Laissant les fantasmes à ceux qu’ils séduisent, la recherche de la vérité est un jeu gratifiant qui laisse voir que les traditions des anciens Celtes étaient étonnamment subtiles et que les formes dans lesquelles ils les ont le mieux exprimées - mythes, contes et légendes - surpassent souvent les meilleurs romans ! Le présent livre propose d’abord une introduction à l’état actuel des connaissances puis s’attache à une analyse des conceptions du monde telles que les révèle la mythologie : car celle-là n’est pas un simple recueil de contes mais une tentative, dans un langage imagé, d’expliquer le fonctionnement et le destin de l’univers en fonction des connaissances scientifiques et de la réflexion philosophique de l’époque.', - style: 'Histoire', + titre: 'La mythologie du monde celte', + auteur: 'Claude Sterckx', + synopsis: 'Mystérieux Celtes ? Oui et non… Oui parce qu’on les croit généralement enveloppés d’une aura hors du commun… Non, parce que les chercheurs ont mis au jour bien des aspects de leur personnalité et de leur mode de vie… Oui encore, parce que ces travaux restent trop mal connus et que, trop souvent, des élucubrations alléchantes mais largement fantasmatiques tiennent le devant de la scène… Laissant les fantasmes à ceux qu’ils séduisent, la recherche de la vérité est un jeu gratifiant qui laisse voir que les traditions des anciens Celtes étaient étonnamment subtiles et que les formes dans lesquelles ils les ont le mieux exprimées - mythes, contes et légendes - surpassent souvent les meilleurs romans ! Le présent livre propose d’abord une introduction à l’état actuel des connaissances puis s’attache à une analyse des conceptions du monde telles que les révèle la mythologie : car celle-là n’est pas un simple recueil de contes mais une tentative, dans un langage imagé, d’expliquer le fonctionnement et le destin de l’univers en fonction des connaissances scientifiques et de la réflexion philosophique de l’époque.', + style: 'Histoire', isbn: 2501054105 ) + Livre.create( - titre: 'Xenos', - auteur: 'Dan Abnett', - synopsis: '« La pensée engendre l’hérésie - l’hérésie appelle le châtiment ». Infiltrée au cœur de l’humanité, l’Inquisition la sillonne comme une ombre vengeresse, poursuivant et abattant impitoyablement ses ennemis avec une intransigeance absolue. L’inquisiteur Eisenhorn se trouve confronté à une conjuration interstellaire de grande envergure ainsi qu’à des sombres puissances démoniaques qui toutes rivalisent pour la possession d’un texte ésotérique d’une abominable puissance - un antique grimoire connu sous le nom de Nécrothèque. Découvrez le premier roman de la trilogie du célèbre Inquisiteur Eisenhorn et percez les mystères de l’un des meilleurs univers de science-fiction, celui de Warhammer 40 000 !', - style: 'Fantasy', - isbn: 2915989273 -) + titre: 'Xenos', + auteur: 'Dan Abnett', + synopsis: '« La pensée engendre l’hérésie - l’hérésie appelle le châtiment ». Infiltrée au cœur de l’humanité, l’Inquisition la sillonne comme une ombre vengeresse, poursuivant et abattant impitoyablement ses ennemis avec une intransigeance absolue. L’inquisiteur Eisenhorn se trouve confronté à une conjuration interstellaire de grande envergure ainsi qu’à des sombres puissances démoniaques qui toutes rivalisent pour la possession d’un texte ésotérique d’une abominable puissance - un antique grimoire connu sous le nom de Nécrothèque. Découvrez le premier roman de la trilogie du célèbre Inquisiteur Eisenhorn et percez les mystères de l’un des meilleurs univers de science-fiction, celui de Warhammer 40 000 !', + style: 'Fantasy', + isbn: 2915989273) diff --git a/test/controllers/livres_controller_test.rb b/test/controllers/livres_controller_test.rb new file mode 100644 index 0000000..3de5af4 --- /dev/null +++ b/test/controllers/livres_controller_test.rb @@ -0,0 +1,9 @@ +require 'test_helper' + +class LivresControllerTest < ActionDispatch::IntegrationTest + test "should get index" do + get livres_index_url + assert_response :success + end + +end diff --git a/test/fixtures/livres.yml b/test/fixtures/livres.yml new file mode 100644 index 0000000..ced0264 --- /dev/null +++ b/test/fixtures/livres.yml @@ -0,0 +1,15 @@ +# Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html + +one: + titre: MyString + auteur: MyString + synopsis: MyText + style: MyString + isbn: 1 + +two: + titre: MyString + auteur: MyString + synopsis: MyText + style: MyString + isbn: 1 diff --git a/test/models/livre_test.rb b/test/models/livre_test.rb new file mode 100644 index 0000000..014690d --- /dev/null +++ b/test/models/livre_test.rb @@ -0,0 +1,7 @@ +require 'test_helper' + +class LivreTest < ActiveSupport::TestCase + # test "the truth" do + # assert true + # end +end