Updating Partials3:31 with Jay McGavren
"Partial" is short for "partial view". And it's a partial that contains the HTML code for the form.
So in both our edit and 0:00 new templates, we see a call to the render method with an argument of form. 0:02 When render is called from either of these templates, it looks up a partial. 0:06 Partial is short for PartialView and 0:11 it's this partial contains the HTML code for the form. 0:14 When you need an element to look identical on multiple pages in your app, it's a pain 0:18 to maintain multiple copies of that element within multiple erb templates. 0:23 Any time you change one, you have to remember to change the other. 0:28 Otherwise, they could get out of sync and might wind up looking different or 0:31 one of them could stop working altogether. 0:35 And that's why Rails offers partials. 0:38 You can take the HTML code that's identical between the templates and 0:41 move it to a partial view. 0:45 Then, each template that needs that code can render the partial and 0:47 the partial's code will be included in the template's code. 0:50 When you need to make a change, you only have to update the partial. 0:54 Any changes you make will immediately be visible in all the views that 0:57 use that partial. 1:01 So both the Edit Post page and 1:03 the New Post page include a call to render a partial called form. 1:04 If we look at the log, 1:09 we'll see it's been showing us the step where it renders the partial all along. 1:10 Within both the edit and new requests, we'll see rendered posts_form.html.erb. 1:14 The underscore at the start of the filename indicates that a file 1:21 holds a partial template. 1:24 When calling render, you can leave the underscore and the html.erb extension off. 1:26 Rails adds those automatically, that just leaves render form. 1:32 Following the name of the partial is a hash that sets up local variables for 1:36 use within the partial. 1:39 So this will make the object referenced by the post instance variable 1:41 available within the partial under the post local variable. 1:45 Let's open the partial file to see what it contains. 1:49 It's at app > views > posts _form.html.erb. 1:53 We can see that it takes the post object we passed in and 2:00 renders an HTML form for it. 2:03 The f block parameter here will hold the Ruby object representing the HTML form. 2:06 We can call methods on that object to add elements to the HTML form. 2:11 We can see the code for the title field here. 2:16 Let's mimic that for the body field. 2:21 So we'll copy it and paste. 2:23 We'll create another div with class of field. 2:28 We'll set up an HTML label for the body field. 2:32 Just like the one for the title by calling the label method on the form object and 2:36 passing it a parameter of body. 2:41 Then we'll set up a field for the body, but 2:43 instead of calling the text field method we'll call the text area method. 2:46 This will give the user a larger area to type in. 2:51 And we'll change the title argument to body. 2:55 If we save our work, go back to our browser and 3:00 refresh our page, we'll see a new form where we can enter a post body. 3:03 And if we go to the Edit page, we'll see a field there as well. 3:08 But there's a problem. 3:13 On our New Post form, if we fill up the post body and submit it, 3:15 We'll see that the body field is still blank. 3:22 To fix that, we're going to have to make one last change in our controller code. 3:25 We'll look at how to do that next. 3:29
You need to sign up for Treehouse in order to download course files.Sign up