DEV Community

Discussion on: Let's Use Rails Partials To Render Art from Magic: the Gathering!

Collapse
 
andrewbrown profile image
Andrew Brown 🇨🇦 • Edited

There is a short form for writing partials. So the following:

  <%= render partial: '/pages/forms/refresh_counter', locals: {counter: @refresh_counter} %>
Enter fullscreen mode Exit fullscreen mode

Can be written:

  <%= render  '/pages/forms/refresh_counter', counter: @refresh_counter %>
Enter fullscreen mode Exit fullscreen mode

You can omit the trailing slash

  <%= render  'pages/forms/refresh_counter', counter: @refresh_counter %>
Enter fullscreen mode Exit fullscreen mode

Since the controller is pages rails can infer this but it can only do this for top-level partials.

So this wouldn't work

  <%= render  'forms/refresh_counter', counter: @refresh_counter %>
Enter fullscreen mode Exit fullscreen mode

But this would.

  <%= render 'forms_refresh_counter', counter: @refresh_counter %>
Enter fullscreen mode Exit fullscreen mode

You would think you could use a symbol because you can in your controller for when you can call render:

PagesController < ApplicationController
def show
  render :show
end
Enter fullscreen mode Exit fullscreen mode

But it cannot be done with partials. I thought you could before but I think I am mistaken.

  <%= render :forms_refresh_counter, counter: @refresh_counter %>
Enter fullscreen mode Exit fullscreen mode