J'ai crée un controller pour mon application ruby on Rails mais j'éprouve un problème pour la fonction create. Pouvez vous m'aidez ?
Voici les codes :
class PostsController < ApplicationController
def index
@posts = Post.all
end
def show
@post = Post.find(params[:id])
end
def new
@post = Post.new
end
def create
Post.create(params[:post])
end
end
#page new
=form_for @post do |p|
=p.text_field :title, :placeholder =>"title"
%br
=p.text_area :content, :placeholder => "content"
%br
=p.submit
Salut, ce qu'il serait bien serai que tu explique quel est le problème?
De ce que je vois, tu ne semble pas savoir comment créer ta fonction create
. Si c'est bien de cela dont il s'agit, lit la suite. Premièrement, pour des raisons de sécurités, Rails introduit la notion de strong params
afin de filtrer les données postés des formulaires. Pour reprendre ton code, il faudrait que tu fasse :
class PostsController < ApplicationController
def create
@post = Post.new(post_params) # Injection des strongs params
end
private
def post_params
params.require(:post).permit(:title, :content)
end
end
Ensuite, et en reprennant le code ci-dessus, afin de sauvegarder ton post, tout ce qu'il te reste a faire est d'invoquer la méthode save
de ton model Post :
class PostsController < ApplicationController
def create
@post = Post.new(post_params) # Injection des strongs params
respond_to do |format|
if @post.save
format.html { redirect_to @post } # Ou une URL de ton choix
else
format.html { render :new } # Réaffichera le formulaire avec les erreurs de validations contenu dans @post.errors
end
end
end
private
def post_params
params.require(:post).permit(:title, :content)
end
end
NOTE : Le code Ruby doit être indenter par 2 espaces et non 4. Les règles de codage, c'est important :)