[RUBY] [Fonction de commande] rails Implémentation de la fonction de commande L'écran de confirmation sera également créé ~

【objectif】

Créez une fenêtre de recherche dans laquelle vous pouvez rechercher des informations sur le modèle

【mérite】

■ Amélioration de l'UX ■ Meilleure compréhension de MVC

【Environnement de développement】

■ Mac OS catalina ■ Ruby on Rails (5.2.4.2) ■ Virtual Box:6.1 ■ Vagrant: 2.2.7

【La mise en oeuvre】

Création d'applications

mac.terminal


$ rails new search
$ rails g model Item name:string text:text price:integer
$ rails g controller items
$ rails g model Order quantity:integer amount:integer item:references
$ rails g conrtroller orders show confirm 
$ rails db:migrate

Modifier le modèle

models/items.rb


has_many :orders

Modifier l'itinéraire

config/routes.rb


root 'items#index'
  resources :items do 
    get 'order' => 'orders#show'
    post 'order/confirm' => 'orders#confirm'
    post 'order' => 'orders#create'
  end

Ajouter une vue

items/index.html.erb


<h2>Liste des articles</h2>

<% @items.each do |item| %>
  <%= item.name %>
  <%= item.text %>
  <%= item.price %>
<% end %>

<h2>Création d'objets</h2>

<%= form_with modle: @item do |f| %>
  <%= f.text_field :name %>
  <%= f.text_area :text %>
  <%= f.text_field :price%>
  <%= f.submit %>
<% end %>

order/show.html.erb


<h2>Écran de commande</h2>

<p>Informations sur l'élément</p>
  <%= @item.name %>
  <%= @item.price %>

<%= form_with ([model: @item, @order],local: true url: item_order_confirm_path) do |f| %>
  <%= f.text_field :quantity %> <br>
  <%= f.text_field :amount %> <br>
  <%= f.submit "Envoyer" %> <br>
<% end %>

order/confirm.html.erb


<h2>Écran de confirmation de commande</h2>
  <%= @order.amount %>
  <%= @order.quantity %>
  <%= @item.name %>
  <%= @item.price %>
<%= form_with model:[@item, @order], url:(item_order_path) do |f| %>
  <%= f.hidden_field :amount %>
  <%= f.hidden_field :quantity %>
  <%= f.submit %>
<% end %>

Modifier le contrôleur

orders_controller.rb


  def show
    @item = Item.find(params[:item_id])
    @order = @item.order.new
  end

  def confirm
    @item = Item.find(params[:item_id])
    @order = @item.order.new(order_params)
  end

  def create
    @item = Item.find(params[:item_id])
    @order = @item.order.new(order_params)
    @order.save
    redirect_to items_path
  end

  private
  def order_params
    params.require(:order)
    .permit(:amount,
            :quantity,
            :item_id)
  end

c'est tout.

[Je veux le lire ensemble]

■ À propos de form_with https://qiita.com/tanaka-yu3/items/50f54f5d4f4b8dfe19f3

■ Concernant l'affichage de l'écran de confirmation https://qiita.com/tomoharutt/items/7959d28764912c64562f

Recommended Posts

[Fonction de commande] rails Implémentation de la fonction de commande L'écran de confirmation sera également créé ~
Implémentation de la fonction de recherche floue Rails
[Rails] Implémentation de la fonction de catégorie
Mise en place de la fonction de tri des rails (affichés par ordre de nombre de like)
[Rails] Implémentation de la fonction tutoriel
[Rails] Implémentation d'une fonction similaire
[Rails] Implémentation de la fonction d'importation CSV
[Rails] Implémentation asynchrone de la fonction similaire
[rails] Implémentation de l'écran de connexion dans la devise
[Rails] Implémentation de la fonction de prévisualisation d'image
[Rails] À propos de la mise en œuvre de la fonction similaire
[Rails] Implémentation de la fonction de retrait utilisateur
[Rails] Implémentation de la fonction d'exportation CSV
[Rails] Implémentation de la fonction de catégorie d'ascendance gemme
[Ruby on Rails] Implémentation de la fonction de commentaire
[Rails] "Entrée" -> "Écran de confirmation" -> "Enregistrer" -> "Afficher"
[Rails] Commentaire mémo de procédure d'implémentation
[Rails] Je vais expliquer la procédure d'implémentation de la fonction follow en utilisant form_with.
[Ruby on Rails] Suivez l'implémentation de la fonction: bidirectionnelle
Rails [Pour les débutants] Implémentation de la fonction de commentaire
Échafaudage de procédure d'implémentation de fonction CRUD de base
[Ruby on rails] Implémentation d'une fonction similaire