[RUBY] J'ai été surpris que Rails le fasse automatiquement.

Prenez note de la confusion lors de vos études à TECH :: CAMP. Je n'ai pas lu la référence officielle, il peut donc y avoir des erreurs.

tl; d

Les rails le feront pour vous

Vous n'avez rien à écrire dans l'index, afficher, nouveau, modifier les actions

def index
end

def show
end

def new
end

def edit
end

Sur les sept méthodes, j'ai été surpris que ces quatre fonctionnent si j'écrivais au moins autant. Afin d'envoyer des données du côté de la vue, j'ai utilisé la méthode d'enregistrement actif pour déclarer des variables d'instance ... et je l'ai préparée comme je l'ai appris dans le cours de base. Certes, lorsque ces actions sont spécifiées par URL ou Préfixe, il est presque certain que les variables d'instance du modèle correspondant (dans le cas de show and edit, id) seront préparées. Ainsi, même si vous ne l'écrivez pas, il prépare automatiquement les variables d'instance.

Cependant, si vous souhaitez modifier l'ordre d'affichage, chargez le modèle associé avec include pour éviter le problème N + 1, lien avec JavaScript, etc., vous devez faire une description correspondante.

form_with peut être spécifié par le nom du modèle et le nom de la colonne.

html.erb


<%= form_with(model: @tweet, local: true) do |form| %>
	<%= form.text_field :name, placeholder: "name" %>	
	<%= form.text_area :text, placeholder: "text" , rows: "10" %>
	<%= form.submit "SEND" %>
<% end %>

Il déterminera automatiquement si l'instance transmise est dans l'enregistrement, vous n'avez donc pas à écrire le chemin pour quelle action envoyer les données. En faisant cela, le code du formulaire peut être utilisé tel quel dans la nouvelle vue et la vue d'édition. Cependant, il semble que vous ayez besoin de nouveau avec une nouvelle action pour indiquer à form_with qu'il s'agit d'une instance de new.

Dans la partie qui génère des formulaires de saisie individuels tels que form.text_field: name, si vous spécifiez le nom de la colonne, il décidera automatiquement de la colonne à enregistrer. De plus, lorsque le symbole de ce nom de colonne est converti en HTML, il est converti sous la forme ʻid = "name" , donc même si vous ne définissez pas l'id à utiliser dans JavaScript, il s'agit de document.getElementById (" Pratique pour spécifier avec le nom ")`.

Pour link_to, transmettez l'instance avec Prefix.

html.erb


<% rooms.each do |room|%>
	<%= link_to room.name, room_messages_path(room), method: :get%>
<% end %>

Puisque Prefix peut spécifier une instance, il n'est pas nécessaire de la convertir en une valeur numérique ou de développer l'expression comme "" rooms / destroy / # {room.id} "`. Est-ce comme un modèle d'URI constant? Je me demandais, mais qui est le préfixe qui peut spécifier quelque chose comme un argument? Méthode?

Recommended Posts

J'ai été surpris que Rails le fasse automatiquement.
Je suis entré depuis Rails et je ne savais pas ce qu'était [attr_accessor]
J'ai construit un environnement de rails avec docker et mysql, mais j'étais malade
Le chapitre 14 du didacticiel sur les rails était terminé et il a fallu 155,5 heures au total.
J'ai été beaucoup facturé par AWS pendant le développement sur rails, mais ...
Heroku peut être déployé, mais j'obtiens une erreur et je ne peux pas l'ouvrir
J'ai mis un compositeur, mais il ne répond pas.
J'ai créé un formulaire de publication Rails, mais je ne peux pas publier (balise de formulaire) / Aucune erreur ne se produit