créer une action dans les rails
Lorsque j'utilise un échafaudage dans les rails , contrôleur crée diverses méthodes comme
nouveau,créer,montrer,l'index, etc
mais ici je ne peux pas comprendre la transition de nouvelles mesures pour créer une action
par exemple. quand je clique sur nouveau Poste qu'il look pour une nouvelle action,maintenant il rendre _form,mais quand au moment de présenter la façon dont les données saisies à cette table, où l'action de création de contrôleur appelé et comment ?
Mon posts_controller est comme
def new
@post = Post.new
@post.user_id = current_user.id
@post.save
respond_to do |format|
format.html # new.html.erb
format.json { render json: @post }
end
end
# GET /posts/1/edit
def edit
@post = Post.find(params[:id])
authorize! :manage, @post
end
# POST /posts
# POST /posts.json
def create
@post = Post.new(params[:post])
respond_to do |format|
if @post.save
format.html { redirect_to @post, notice: 'Post was successfully created.' }
format.json { render json: @post, status: :created, location: @post }
else
format.html { render action: "new" }
format.json { render json: @post.errors, status: :unprocessable_entity }
end
end
end
OriginalL'auteur Akash Shinde | 2013-06-16
Vous devez vous connecter pour publier un commentaire.
Par défaut de l'échafaudage sur le formulaire (lire ici)
Si vous souhaitez personnaliser une action sur une nouvelle forme d'échafaudage, vous devez ajouter
:url => {:action => "YourActionName"}
sur votre formulaire.Exemple :
OriginalL'auteur rails_id
Il est tout au sujet de verbes et d'itinéraires.
Votre forme, une requête POST à l'
/posts
route. Si vous avez la liste de vos itinéraires à l'aiderake routes
, vous verrez que toutes les requêtes POST précis de la route sont dirigés vers lecreate
action dansPostsController
, ouposts#create
pour faire court.OriginalL'auteur depa
Lorsque vous pointez votre navigateur sur
/posts/new
, il rend lenew
d'action, qui vous présente avec un formulaire à remplir (défini dansapp/views/posts/new.html.erb
etapp/views/posts/_form.html.erb
. Lorsque vous cliquez sur le Soumettre bouton dans votre formulaire, il l'envoie vos données à l'create
d'action, qui, en fait, crée l'enregistrement dans la base de données.Regardant votre PostsController code, vous avez probablement ne pas voulez avoir la ligne
dans votre
new
action, qui permettra d'économiser un enregistrement vide à la base de données si l'utilisateur remplit le formulaire d'inscription ou pas. Et, vous aurez probablement envie de se déplacerà votre
create
action, car c'est là que vous êtes réellement économiser de la poste à la base de données.OriginalL'auteur drosboro