Des essais en Rails pour avoir un tableau modifiable.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

199 lines
8.7KB

  1. = Créer un tableau éditable en Ruby-On-Rails
  2. == Initialisation du projet
  3. Création du projet :
  4. [source, sh]
  5. ----
  6. rails new ajaxtable
  7. ----
  8. Préparation de la migration par création de la table Livres :
  9. [source, sh]
  10. ----
  11. bin/rails g model livres titre:string auteur:string synopsis:text style:string isbn:integer
  12. ----
  13. Préparation des gems :
  14. [source, ruby]
  15. ----
  16. # /Gemfile
  17. source 'https://rubygems.org'
  18. git_source(:github) { |repo| "https://github.com/#{repo}.git" }
  19. ruby '2.6.3'
  20. gem 'rails', '~> 5.2.4', '>= 5.2.4.1'
  21. gem 'puma', '~> 3.11'
  22. gem 'sass-rails', '~> 5.0'
  23. gem 'uglifier', '>= 1.3.0'
  24. gem 'coffee-rails', '~> 4.2'
  25. gem 'turbolinks', '~> 5'
  26. gem 'jbuilder', '~> 2.5'
  27. gem 'bootsnap', '>= 1.1.0', require: false
  28. gem 'bootstrap', '~> 4.3.1'
  29. gem 'jquery-rails'
  30. gem 'jquery-ui-rails'
  31. group :development, :test do
  32. gem 'sqlite3'
  33. gem 'byebug', platforms: [:mri, :mingw, :x64_mingw]
  34. end
  35. group :development do
  36. gem 'web-console', '>= 3.3.0'
  37. gem 'listen', '>= 3.0.5', '< 3.2'
  38. gem 'spring'
  39. gem 'spring-watcher-listen', '~> 2.0.0'
  40. gem 'guard-rails', require: false
  41. gem 'guard-livereload', require: false
  42. gem 'rack-livereload'
  43. gem 'rerun'
  44. end
  45. group :test do
  46. gem 'capybara', '>= 2.15'
  47. gem 'selenium-webdriver'
  48. gem 'chromedriver-helper'
  49. end
  50. gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby]
  51. ----
  52. Installation des gems :
  53. [source, bash]
  54. ----
  55. bundle install
  56. ----
  57. Initialisation de la base de données :
  58. [source, ruby]
  59. ----
  60. # /db/seeds.rb
  61. Livre.create(
  62. titre: 'Une porte sur l’été',
  63. auteur: 'Robert A. Heinlein',
  64. synopsis: 'Daniel B. Davis s’aperçoit que sa fiancée et son meilleur ami l’ont trahi et évincé de son usine de fabrication de robots. Il décide de fuir vers l’avenir, en compagnie de son chat, Petronius le Sage, même si cela doit l’obliger à quitter Ricky, une petite fille qu’il aime tendrement. Daniel choisit la route du « long sommeil », c’est-à-dire celle de l’hibernation artificielle. Mais son chat disparaît et c’est seul qu’il affronte le bond dans le temps. Par quel miracle, trente ans plus tard, Rocky est-elle âgée de vingt ans à peine et Petronius le Sage, présent dans ce monde du futur ?',
  65. style: 'Science-Fiction',
  66. isbn: 2277125105
  67. )
  68. Livre.create(
  69. titre: 'Dune',
  70. auteur: 'Frank Herbert',
  71. 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 ?',
  72. style: 'Science-Fiction',
  73. isbn: 2221026020
  74. )
  75. Livre.create(
  76. titre: 'Le bureau des atrocités',
  77. auteur: 'Charles Stross',
  78. 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.',
  79. style: 'Science-Fiction',
  80. isbn: 2253123684
  81. )
  82. Livre.create(
  83. titre: 'La mythologie du monde celte',
  84. auteur: 'Claude Sterckx',
  85. 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.',
  86. style: 'Histoire',
  87. isbn: 2501054105
  88. )
  89. Livre.create(
  90. titre: 'Xenos',
  91. auteur: 'Dan Abnett',
  92. 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 der 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 !',
  93. style: 'Fantasy',
  94. isbn: 2915989273
  95. )
  96. ----
  97. Migration de la base de données avec les données :
  98. [source, bash]
  99. ----
  100. bin/rake db:create db:migrate db:seed
  101. ----
  102. Lancement de l’application :
  103. [source, bash]
  104. ----
  105. bin/rails s
  106. ----
  107. Ça marche, on peut arrêter à tout moment le serveur avec la combinaison de touches contrôle+D.
  108. == Tableau des livres
  109. [source, bash]
  110. ----
  111. bin/rails g controller Livres index
  112. ----
  113. [source, ruby]
  114. ----
  115. # /app/controllers/livres_controller.rb
  116. class LivresController < ApplicationController
  117. def index
  118. @livres = Livre.all
  119. end
  120. end
  121. ----
  122. [source, ruby]
  123. ----
  124. # /app/views/livres/index.html
  125. <h1>Tableau de mes livres</h1>
  126. <% if @livres.size > 0 %>
  127. <table>
  128. <thead>
  129. <tr>
  130. <th>Titre</th>
  131. <th>Auteur</th>
  132. <th>Synopsis</th>
  133. <th>Style</th>
  134. <th>ISBN</th>
  135. </tr>
  136. </thead>
  137. <tbody>
  138. <% @livres.each do |livre| %>
  139. <tr>
  140. <td><%= livre.titre %></td>
  141. <td><%= livre.auteur %></td>
  142. <td><%= livre.synopsis[0..120] %></td>
  143. <td><%= livre.style %></td>
  144. <td><%= livre.isbn %></td>
  145. </tr>
  146. <% end %>
  147. </tbody>
  148. </table>
  149. <% end %>
  150. ----
  151. == Sources d’inspiration
  152. * https://stackoverflow.com/questions/23926204/updating-table-data-in-rails-using-ajax
  153. * https://medium.com/@jelaniwoods/how-to-actually-use-ajax-in-rails-83e667ea7953
  154. * https://dev.nozav.org/rails_ajax_table.html
  155. == Sources d’idée pour les Livres
  156. * https://www.outrelivres.fr/[Outre Livres], tenu par mon amie Stéphanie Chaptal
  157. * Les synopsis et numéros ISBN viennent du site https://www.babelio.com[Babelio]