diff options
author | Yves Senn <yves.senn@gmail.com> | 2013-06-30 06:44:03 -0700 |
---|---|---|
committer | Yves Senn <yves.senn@gmail.com> | 2013-06-30 06:44:03 -0700 |
commit | 996f9b5873e80cfc2255b4e28755165fc8e55d83 (patch) | |
tree | 63ea476a088fe19f1a504fc8162f71c6ab336474 | |
parent | 162cc66864f93641610d246191ec53cd020bf545 (diff) | |
parent | bb8f0b401dbca655b203bbbf1f795e3612ae4634 (diff) | |
download | rails-996f9b5873e80cfc2255b4e28755165fc8e55d83.tar.gz rails-996f9b5873e80cfc2255b4e28755165fc8e55d83.tar.bz2 rails-996f9b5873e80cfc2255b4e28755165fc8e55d83.zip |
Merge pull request #11186 from jetthoughts/synchronize_create_method_body
Synchronize PostController#create code from 5.6 to others sections in Getting Started guide.
-rw-r--r-- | guides/source/getting_started.md | 43 |
1 files changed, 34 insertions, 9 deletions
diff --git a/guides/source/getting_started.md b/guides/source/getting_started.md index 05029b9ebe..26360e815b 100644 --- a/guides/source/getting_started.md +++ b/guides/source/getting_started.md @@ -612,11 +612,16 @@ we want to accept in our controllers. In this case, we want to allow the look like this: ``` - def create - @post = Post.new(params[:post].permit(:title, :text)) +def create + @post = Post.new(post_params) - @post.save - redirect_to @post + @post.save + redirect_to @post +end + +private + def post_params + params.require(:post).permit(:title, :text) end ``` @@ -767,7 +772,7 @@ def new end def create - @post = Post.new(params[:post].permit(:title, :text)) + @post = Post.new(post_params) if @post.save redirect_to @post @@ -775,6 +780,11 @@ def create render 'new' end end + +private + def post_params + params.require(:post).permit(:title, :text) + end ``` The `new` action is now creating a new instance variable called `@post`, and @@ -905,12 +915,17 @@ Next we need to create the `update` action in `app/controllers/posts_controller. def update @post = Post.find(params[:id]) - if @post.update(params[:post].permit(:title, :text)) + if @post.update(post_params) redirect_to @post else render 'edit' end end + +private + def post_params + params.require(:post).permit(:title, :text) + end ``` The new method, `update`, is used when you want to update a record @@ -918,6 +933,8 @@ that already exists, and it accepts a hash containing the attributes that you want to update. As before, if there was an error updating the post we want to show the form back to the user. +We reuse the `post_params` method that we defined earlier for the create action. + TIP: You don't need to pass all attributes to `update`. For example, if you'd call `@post.update(title: 'A new title')` Rails would only update the `title` attribute, leaving all other @@ -1303,9 +1320,14 @@ Let's wire up the `create` in `app/controllers/comments_controller.rb`: class CommentsController < ApplicationController def create @post = Post.find(params[:post_id]) - @comment = @post.comments.create(params[:comment].permit(:commenter, :body)) + @comment = @post.comments.create(comment_params) redirect_to post_path(@post) end + + private + def comment_params + params.require(:comment).permit(:commenter, :body) + end end ``` @@ -1527,10 +1549,9 @@ controller (`app/controllers/comments_controller.rb`): ```ruby class CommentsController < ApplicationController - def create @post = Post.find(params[:post_id]) - @comment = @post.comments.create(params[:comment]) + @comment = @post.comments.create(comment_params) redirect_to post_path(@post) end @@ -1541,6 +1562,10 @@ class CommentsController < ApplicationController redirect_to post_path(@post) end + private + def comment_params + params.require(:comment).permit(:commenter, :body) + end end ``` |