je suis nouveau à ruby sur rails et je travaille avec la version 2.3 sur mac osx. J'essaie de créer la même fonctionnalité qu'un échafaudage crée, mais tout seul. J'ai créé un contrôleur, une vue et un modèle "post". dans le contrôleur de poste, i ont les suivantes:instance variable vs symbole en ruby sur rails (form_for)
class PostController < ApplicationController
def index
end
def new
@post = Post.new
end
end
dans new.html.erb, i ont les suivantes:
<h1>New Post</h1>
<% form_for :post do |f| %>
<%= f.text_field :title %>
<% end %>
i a remarqué que, dans l'échafaudage de code généré, l'utilisation de la variable d'instance @post pour l'assistant form_for. pourquoi utilisent-ils la variable d'instance dans le formulaire généré par l'échafaudage en passant le symbole: post dans form_for fait exactement la même chose, alors qu'un symbole nécessite de changer la config des routes?
merci beaucoup, Yuval
merci beaucoup. ce qui le rend clair :) –
l'importance de cette _method cachée est que les navigateurs ne supportent pas les méthodes put et delete, donc vous devez laisser l'application savoir quand une méthode post est censé être un put ou un delete, heureusement rails magiquement poignées ceci pour nous – ErsatzRyan
Vous devez utiliser @post sur le nouveau formulaire, et vous en avez besoin même si vos formulaires sont séparés. Sinon, lorsque vous créez un nouveau message avec des données non valides et qu'il retourne au nouveau formulaire avec des erreurs de validation, il ne remplira pas les informations que vous avez entrées. –