(Ruby on Rails6) Erstellen Sie eine Funktion zum Bearbeiten des veröffentlichten Inhalts

Vorwort

Hier bleibt die Arbeit des "Bearbeitens des veröffentlichten Inhalts" als Memorandum unter der Annahme, dass die veröffentlichte Seite erstellt wurde.

Erstellen Sie eine Funktion zum Bearbeiten des veröffentlichten Inhalts

Bearbeitungsseite erstellen

Erstellen Sie eine neue Bearbeitungsseite an drei Punkten: Routen, Controller und Ansicht. Auch für die Seitenerstellung

・ Controller-Name → Formular ・ Aktionsname → Bearbeiten

Es ist eingestellt mit.

(Beispiel)

config/routes


Rails.application.routes.draw do
  get '/' => 'form#index'
  get '/form' => 'form#form'
  post "form/create" => "form#create"
  get "form/:id/edit" => "form#edit"⇦ Dies
  get "form/:id" => "form#post"
  # For details on the DSL available within this file, see https://guides.rubyonrails.org/routing.html
end

erb:app/views/Irgendein.html.erb


<h1>Seite bearbeiten</h1>

rb:app/controllers/Irgendein.controller.rb


class FormController < ApplicationController
  def index
    @forms = Form.all
    @forms = Form.all.order(created_at: :desc)
  end
  def post
    @forms = Form.find_by(id: params[:id])
  end
  def form
    @forms = Form.find_by(id: params[:id])
  end
  def create
    @forms = Form.new(content: params[:content])
    @forms.save 
    @forms = Form.new(title: params[:title])
    @forms.save 
    redirect_to("/")
  end

def edit ← von hier
   
Ende ← bis hierher
end

Der Beitrag </ strong> von Routen wird beim Abrufen von Formulardaten verwendet. Bitte setzen Sie beim Erstellen einer neuen Seite get </ strong>. Es wird einen Fehler verursachen.

Anfangswerteinstellung auf der Bearbeitungsseite (Textbereich / Eingabe)

controllers

rb:app/views/Irgendein.html.erb


・
・
・
def edit
    @forms = Form.find_by(id: params[:id])← hier
end

Setzen Sie in der Bearbeitungsaktion @forms = Form.find_by (id: params [: id]) </ strong>, um die Daten mit derselben ID wie die URL abzurufen.

views

erb:app/views/Irgendein.html.erb


<h1>Seite bearbeiten</h1>
<div class="form">
  <div>
    <textarea><%= @forms.content %></textarea>← hier
    <input type="submit" value="sparen"> </div>
</div>

<% = @ forms.content%> </ strong> legt den Anfangswert der Eingabe fest.

Änderungen speichern

Aktion zum Controller hinzufügen

Sie erhalten den Wert aus dem Formular. In Routen sollten Sie ihn daher mit post </ strong> anstatt mit get ausführen.

config/routes.rb


post "form/:id/new" => "form#new"

Einstellungen umleiten

Wenn Sie bereit sind, den Wert aus dem Formular für die Aktion zu erhalten, müssen Sie umleiten </ strong>, nachdem Sie auf Senden geklickt haben.

rb:app/views/Irgendein.controllers.rb


def new
    redirect_to("/")
end

Verwenden Sie redirect_to ("/") </ strong>, um die Umleitung festzulegen. / </ strong> wird von mir festgelegt, bitte arrangieren Sie es individuell.

Geben Sie das Ziel in Ansichten an

Ich habe den Wert aus dem Formular erhalten und ihn früher umgeleitet. Geben Sie hier das Ziel in Ansichten an.

erb:app/views/Irgendein.controllers.erb


<h1>Seite bearbeiten</h1>
<%= form_tag("/posts/#{@post.id}/new") do %>← hier
<div class="form">
  <div>
    <textarea><%= @forms.title %></textarea> 
    <textarea><%= @forms.content %></textarea> 
    <input type="submit" value="sparen"> </div>
</div>
<% end %>← hier

↓ Details

erb:app/views/Irgendein.html.erb


<%= form_tag("/posts/#{@post.id}/new") do %>
Formular-Tag
<% end %>

Das Ziel wird durch ↑ angegeben.

Aktualisieren Sie den veröffentlichten Inhalt

Ich muss die Daten aus der Datenbank erhalten. Die Erfassungsaktion kann durch Hinzufügen des Aktionsnamenattributs ausgeführt werden. Führen Sie es also aus.

Geben Sie das Namensattribut in Ansicht an

erb:app/views/Irgendein.html.erb


<h1>Seite bearbeiten</h1>
<%= form_tag("/posts/#{@post.id}/new") do %>
<div class="form">
  <div>
    <textarea name="content"><%= @forms.content %></textarea>← hier
    <input type="submit" value="sparen"> </div>
</div>
<% end %>

Wird durch Parameter angegeben und auf dem Controller gespeichert

Mit params </ strong> können Sie ein Objekt erstellen, das die gesendeten Daten enthält.

rb:app/controllers/Irgendein.controller.rb


def update
    @forms = Form.find_by(id: params[:id])
    @forms.content = params[:content]
    @forms.save
    
    redirect_to("/")
  end

Nachwort

Vielen Dank, dass Sie so weit gelesen haben. Es kann einige Zeit dauern, bis Sie den Prozess wie das Festlegen des Anfangswertes verstehen, aber ich möchte Ihr Verständnis stetig vertiefen. Da die Details wie "Link zur Posting-Seite" in der Einführung hier weggelassen werden, wird empfohlen, dass Sie die von Ihnen selbst erstellte festlegen.

Referenzlink

<a href = "https://www.amazon.co.jp/Ruby-Rails-%E5%AE%9F%E8%B7%B5%E3%82%AC%E3%82%A4%E3%83% 89-beeindruck-gear / dp / 4295008052 "target =" blank "> Ruby on Rails6 - Praktischer Leitfaden

Meine Verbindung

Es gibt auch einen Link auf Twitter / Portfolio. Wenn Sie also interessiert sind, Bitte verbinden. Ich würde mich sehr freuen, Freunde zu haben, mit denen ich mein Programmierlernen teilen kann.

Twitter Portfolio Github

Recommended Posts