Kurisu
So I checked the definition of Phoenix View render_layout function and I would like to write something similar to pass multiple blocks to render into differents parts of my layout template. Here is the function I writed in my layout view module:
def render_banner(assigns, left: left_block, right: right_block) do
assigns =
assigns
|> Map.new()
|> Map.put(:banner_left_content, left_block)
|> Map.put(:banner_right_content, right_block)
render("banner.html", assigns)
end
But now I don’t know how to use it inside my templates.
I would like to do something like:
<%= LayoutView.render_banner assigns do %>
<% :left %>
<h1>TITLE</h1>
<hr>
<% :right %>
<img src="/images/img.svg">
<hr>
<% end %>
I don’t want specifically this syntax, just anything that would be enough readable.
Please can you guide me to implement this?
Thanks
Trending in Questions
I’m working on a project that simulates the bumbl example in the programming phoenix book. It acts almost like an email client. We have a...
New
Hello,
I know there is an approach for handling lists that allows for optimized traversal, but I can’t recall the specific method (somet...
New
Hi everyone,
I am toying with the idea of building a “match maker” for giving personal help to people that wants to start coding.
I sta...
New
Documentation
While reading the Scoped Routes section, I noticed that the documentation currently refers to a problem without explainin...
New
So my question is quite simple and i have found no conclusive answer on forum, google or AI.
Should we use :erlang.float for Integer to ...
New
I recently noticed that Elixir’s Logger defaults its primary log level to :debug when no :logger, :level application configuration is pre...
New
I’m new to elixir and just tried to install the elixirLS extension for VScode(ium) and it is throwing some errors that I would like help ...
New
Other Trending Topics
Kafka-Backed Elixir at Scale - Anton Borisov, Piotr Rybarczyk | ElixirConf EU 2026
https://www.youtube.com/watch?v=wNh4OFVXhRo
Comment...
New
Edit: 2026 May 15 - This post is archived.
Mob is alive!!
Main docs: mob v0.7.11 — Documentation
A bit of explanation for the slightly c...
New
Hey, I’m Jesse and I’m the main contributor behind Dexter, a full-featured, lightning-fast Elixir LSP optimized for large codebases. It s...
New
I am happy to introduce the very α version of the new programming language compiled to BEAM.
Welcome Cure.
It has literally three kille...
New
Hi there! We created Gust: A task orchestrator inspired by Airflow.
For those who have never heard about Aiflow, it’s a Python-based wor...
New
Hi everyone!
The first release candidate for the Expert language server project is now available!
We’ve published a press release detai...
New
Categories:
Sub Categories:
Forums
Popular Tags
- #ecto
- #liveview
- #troubleshooting
- #learning-elixir
- #library
- #deployment
- #erlang
- #testing
- #genserver
- #mix
- #absinthe
- #remote-other
- #otp
- #plug
- #how-to-question
- #macros
- #postgres
- #elixirconf
- #channels
- #exunit
- #discussion
- #code-sync
- #podcasts
- #javascript
- #onsite
- #dialyzer
- #docker
- #authentication
- #umbrella
- #full-time-contract
- #podcasts-by-brainlid
- #ecto-query
- #ai
- #elixirconf-us
- #blog-post
- #elixir-ls
- #phoenix_html
- #iex
- #graphql
- #genstage
- #websockets
- #supervisor
- #advent-of-code
- #distillery
- #processes
- #api
- #forms
- #elixirconf-eu
- #metaprogramming
- #hex










Showing Posts 1 to 6- Show Best Posts
- Show All (oldest first)
- Show All (newest first)
LostKobrakai
This is not exactly for layouts, but I created this a few days ago:
https://github.com/LostKobrakai/molecule
evadne
If you want something to take a do/end block then that thing has to be a macro, otherwise you take a function as the argument like how Phoenix deals with its form helpers.
John-Goff
You can actually define a function that takes a block, but it works a little differently to how macros that take a block works. For example,
edit: was thinking some more and I realized that you’re kinda right to recommend passing an anonymous function to a function instead of a block, as that will result in the correct order of side effects same as a macro would. Eg.
evadne
FYI https://stackoverflow.com/a/51452620
John-Goff
Right, that is what my code above is trying to demonstrate
it works, but not how you probably think it does
Kurisu
Thanks everyone for your help.
Since I just have two blocks to pass to my function I kind of cheated on Elixir. ^^
I used
doandelseas keys and it worked.Which can be used like this:
Well it’s maybe a bit semantically weird to use “else” here.
I still plan to dig a little in @LostKobrakai library to find a more elegant solution in the future.