Je voulais un calendrier pour mon application, alors je l'ai fait pour que je puisse personnaliser la mini-application Simple Calendar. J'ai fait "Full Calendar" avant, mais je ne semblais pas être capable de brancher les fonctions que je voulais, donc j'aimerais faire "Simple Calendar" qui puisse être implémenté en détail.
Ceux qui veulent introduire un calendrier Ceux qui peuvent implémenter MVC
ruby 2.6.5 rails 6.0.0 Base de données mysql2 0.4.4 simple_calendar 2.0
Implémentons-le ~
Tout d'abord, lancez une nouvelle application.
Terminal.
% rails _6.0.0_ new simple_calendar_app -d mysql
% cd simple_calendar_app
% rails db:create
La base de données est créée avec mysql.
Terminal.
Created database 'simple_calendar_app_development'
Created database 'simple_calendar_app_test'
Vous avez maintenant une base de données.
Gemfile.
gem 'simple_calendar', '~> 2.0'
Terminal.
% bundle install
N'oubliez pas de regrouper l'installation! !!
Après avoir créé le contrôleur et après avoir visualisé et configuré le routage, créez le modèle. 3.1 Contrôleurs et vues 3.2 Configurer le routage 3.3 Créer un modèle
Terminal.
% rails g controller events index
Terminal.
create app/controllers/events_controller.rb
route get 'events/index'
invoke erb
create app/views/events
create app/views/events/index.html.erb
invoke test_unit
create test/controllers/events_controller_test.rb
invoke helper
create app/helpers/events_helper.rb
invoke test_unit
invoke assets
invoke scss
create app/assets/stylesheets/events.scss
En définissant «index des événements» lors de la création d'un contrôleur, la vue correspondant au contrôleur d'événements et les paramètres de routage seront définis.
ruotes.rb
Rails.application.routes.draw do
get 'events/index'
# For details on the DSL available within this file, see https://guides.rubyonrails.org/routing.html
#Jusqu'à ce point, il est automatiquement défini lorsque le contrôleur est généré.
#Cette fois réglé sur
root to: 'events#index'
resources :events
end
Cette fois, définissez'events # index'à la racine et utilisez les ressources, supprimez donc la description définie automatiquement.
Terminal.
% rails g model event
Modifiez le fichier de migration qui a été généré automatiquement avec le modèle.
2020XXXXXXX_create_events.rb
class CreateEvents < ActiveRecord::Migration[6.0]
def change
create_table :events do |t|
#Ajoutez ces trois
t.string :title
t.text :content
t.datetime :start_time
t.timestamps
end
end
end
Je le définirai dans la vue après cela, mais il semble qu'il sera affiché dans le calendrier en définissant "t.datetime: start_time". De plus, puisqu'il s'agit d'une mini application, il y a trois colonnes à enregistrer, mais elle doit être personnalisée en fonction de l'application à développer.
Terminal.
% rails db:migrate
Lorsque vous démarrez le serveur avec des rails, la page de vue générée automatiquement s'affiche.
Tout d'abord, c'est le modèle.
Ensuite, puisqu'il s'agit d'une mini application, nous implémenterons les trois fonctions minimum requises.
4.1, affichage du calendrier 4.2, ajout d'événements 4.3, afficher des événements supplémentaires sur le calendrier
Modifiez le contrôleur et affichez-le.
/app/controllers/events_controller.rb
class BlogsController < ApplicationController
def index
@events = Event.all #← Ajouter ceci
end
end
/app/views/events/index.html.erb
<h1>Events#index</h1>
<p>Find me in app/views/events/index.html.erb</p>
<%#Comme il est généré automatiquement jusqu'à présent, il est supprimé%>
<%#Ajoutez ce qui suit%>
<%= month_calendar events: @events do |date, events| %>
<%= date.day %>
<% end %>
Terminal.
% rails s
Démarrez le serveur et vérifiez-le une fois.
L'image par défaut s'affiche. Nous corrigerons l'apparence plus tard, mais nous ajouterons d'abord des fonctionnalités.
Nous éditerons le contrôleur et le visionnerons à nouveau. Avant de modifier, créez un nouveau dossier sous vues> événements.
Tout d'abord, ajoutez une nouvelle méthode au contrôleur.
/app/controllers/events_controller.rb
class EventsController < ApplicationController
def index
@events = Event.all
end
#Nouvelle méthode ajoutée
def new
@event = Event.new
end
end
Ensuite, ajoutez un bouton à la vue pour passer à la page "Ajouter un événement".
/app/views/events/index.html.erb
<%= link_to 'Ajout d'événement', new_event_path %> #←link_au post-scriptum
<%= month_calendar events: @events do |date, events| %>
<%= date.day %>
<% end %>
Recherchez la destination de transition "new_event_path" dans les itinéraires de rails.
C'est un peu déraillé, mais quand je voulais savoir quelle vue était prise en charge à partir du modèle URI, j'ai trouvé qu'elle était affichée en maintenant le curseur et en appuyant sur "commande" + clic.
URI Pattern /events/new Déplacez le curseur sur ↑ et appuyez sur "commande" + clic pour passer à la vue correspondante.
Vous pouvez maintenant accéder à la page d'ajout d'événement.
Ensuite, modifiez le nouveau fichier créé précédemment.
/app/views/events/new.html.erb
<h1>tester</h1>
<%= form_with(model: @event, local: true) do |form| %>
<div class="title">
<%= form.label :title %>
<%= form.text_field :title %>
</div>
<div class="time">
<%= form.label :start_time %>
<%= form.datetime_select :start_time %>
</div>
<div class="content">
<%= form.label :content %>
<%= form.text_field :content %>
</div>
<div class="submit">
<%= form.submit %>
</div>
<% end %>
Ça ressemble à ça. Une page d'entrée (nouvelle page) a été créée!
Puisqu'il ne peut pas être sauvegardé tel quel, modifiez le contrôleur.
/app/controllers/events_controller.rb
class EventsController < ApplicationController
#réduction
def create
Event.create(event_parameter)
redirect_to root_path
end
private
def event_parameter
params.require(:event).permit(:title, :content, :start_time)
end
end
Vous pouvez l'enregistrer en ajoutant la méthode create.
Si vous remplissez le formulaire et cochez "Sequel Pro", vous pouvez voir qu'il est enregistré. Cependant, il n'est pas encore affiché sur le calendrier.
Le contenu enregistré précédemment sera affiché (reflété) sur le calendrier. Modifiez la vue.
/app/views/events/index.html.erb
<%= link_to 'Ajout d'événement', new_event_path %>
<%= month_calendar events: @events do |date, events| %>
<%= date.day %>
<%#Ajout d'ici%>
<% events.each do |event| %>
<div>
<%= event.title %>
</div>
<% end %>
<%#Ajouté jusqu'à ici%>
<% end %>
L'événement que vous venez d'ajouter est maintenant affiché dans le calendrier.
Puisque l'apparence est la valeur par défaut, je vais l'arranger.
Sur le site officiel de Simple Calendar. https://github.com/excid3/simple_calendar/blob/master/README.md
Terminal.
% rails g simple_calendar:views
Vous obtiendrez un fichier qui organisera rapidement votre vue.
create app/views/simple_calendar
create app/views/simple_calendar/_calendar.html.erb
create app/views/simple_calendar/_month_calendar.html.erb
create app/views/simple_calendar/_week_calendar.html.erb
Cela sera reflété en ajoutant ce qui suit à application.css.
app/assets/stylesheets/application.css
#réduction
*= require simple_calendar #← Addendum
*= require_tree .
*= require_self
C'était terminé! !! !! Après cela, en ajoutant MVC, vous pouvez personnaliser la fonction d'édition et la fonction de suppression. Personnellement, je développe une application de gestion des réservations clients, je vais donc l'appliquer à cela.
[Rails] Introduction de Simple Calendar dans les applications de développement personnel Sera mis à jour à une date ultérieure
Cette fois, j'ai implémenté ce qui suit dans la mini application.
Avec l'implémentation ci-dessus, il est possible d'afficher l'événement ajouté sur le calendrier.
Cette fois, nous avons implémenté la fonctionnalité minimale, mais nous devons la personnaliser en fonction de chaque spécification.
Je suis un débutant en programmation, mais je publie un article dans l'espoir qu'il aidera les gens qui sont également en difficulté. Cette fois, je l'ai posté comme un enregistrement du premier travail de développement personnel. A la prochaine fois ~
officiel https://github.com/excid3/simple_calendar/blob/master/README.md
Ces deux articles ont été très utiles. Merci! https://qiita.com/miriwo/items/ca2a64bdf8098beccd28 https://qiita.com/isaatsu0131/items/ad1d0a6130fe4fd339d0
Recommended Posts