In Amber if you want to render a different template with a controller not matching its name, you can just pass the path to it in the
render function. Paths in
render are by default relative to the
views directory, lets look at an example below to illustrate this.
class HomeController < ApplicationController def index render "index.slang" end end
In this controller, the render method will look for
index.slang inside of the
The render function look for a template based on these three rules.
- Is the path provided a full path to an actual template file (this includes directory name and template name)
- Or is the path provided a folder containing controller or view
- Is the path provided ending with a .ecr file extension
- Is the path provided a controller and at this point strip the _controller from its name and use the rest
Now we can see how the logic work, so we know that if we provide a full path (relative to the views directory), it will render that template.
class HomeController < ApplicationController def index render "post/index.slang" end end
This should now render the
index.slang from the
I hope this has helped you in Rendering a different template with a Controller in Amber. And make sure you come and join us in the Amber gitter channel.