Problème controller

Par Nandy Bâ, il y a 11 ans


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

2 réponses

kal-el, il y a 11 ans

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 :)

Nandy Bâ, il y a 11 ans

Merci beaucoup kal-el.
ça marche impeccablement bien