Rijidaru

Rijidaru

How to alias a view to call "render(....)" inside an html page?

In an html page I try to:

    <%= render(MyPageView, "my_page1.html") %>

Can’t render <%= render(MyPageView, "my_page1.html") %> because isn’t MyPageView is unavailable. But I’d already added

  alias MyApp.MyPageView 

to an appropriate controller.

Why can’t it find it? How to fix it?

First 10 of 11 Posts Switch mode

Eiji

Eiji

You probably want to write:

  alias MyAppWeb.MyPageView

I’m almost sure that’s it. It happens when you are copying some module in other namespace and then you are aliasing it by hand having in mind standard alias … At least I have made such mistake few times …

NobbZ

NobbZ

As far as I can remember, you need to add the alias to the view-module responsible to render the template.

Rijidaru

Rijidaru OP

I did that. Here in the question this is a typo.

Rijidaru

Rijidaru OP

What alias? Alias of a module to that very module? This won’t work

defmodule MyAppWeb.MyPageView
  alias MyAppWeb.MyPageView
end
NobbZ

NobbZ

The template you are rendering and where you want to call render in, that belongs to a view, and in that view you need to alias.

Rijidaru

Rijidaru OP

To alias where?

Rijidaru

Rijidaru OP

controller

  defmodule MyAppWeb.MyHomeController do
    alias MyAppWeb.MyHomeView


    def index(conn, params) do
      render(conn, "index.html")
    end
  end

html “home/index.html.eex”:

    <%= render(MyAppWeb.MyHomeView, "_test1.html", data: [1, 2, 3]) %>

Doesn’t work - module MyAppWeb.MyHomeView not found

OvermindDL1

OvermindDL1

That’s because templates are compiled into the *View module, not the *Controller module. Put the alias in your *View module. Remember that each template file because another render/2 case in the render/2 function that is in the *View modules. :slight_smile:

OvermindDL1

OvermindDL1

Yep! I do it quite a lot for my helper modules. ^.^

What issue were you having?

Because templates compile as render/2 function calls inside your View module. :slight_smile:

Literally, compiling a file like my_templates/index.html.eex that contains <blah><%= @i %> </blah> compiles into your view file like:

defmodule MyView do

  ... other stuff

  def render("index.html", assigns) do
    ~E"""
    <blah><%= assigns[:i] %> </blah>
    """
  end

  ... more stuff
end
NobbZ

NobbZ

Then please show us a minimal project that causes the error.

Where Next?

Trending in Questions Top

stjefim
Hello! Suppose you are building workflow (order / task / payment) processing system with the following requirements: Each workflow con...
New
jonnycharles
I’m in search of an Elixir library that offers PDF generation capabilities similar to Ruby’s Prawn. While there have been discussions abo...
New
spammy
I’m looking to build a personal workflow to quickly deploy web applications written in elixir/phoenix, for local consumption (ie not on t...
New
silverdr
Using Phoenix.LiveView.TagEngine as an EEx.Engine is deprecated! To compile HEEx, use Phoenix.LiveView.TagEngine.compile/2 instead. Sta...
New
dli
Before I dive in myself, did anyone successfully sprinkle Hologram into their existing LiveView app? Looking for hints regarding: Addi...
New
bottlenecked
Hi all, I wanted to ask how the community is dealing with post-release steps. Today we have Ecto migrations, which make sure that the db...
New
michallepicki
I am using Oban and occasionally, shortly after a deployment, a handful of jobs can fail because of dependency on other parts of the syst...
New

Other Trending Topics Top

JesseHerrick
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
jimsynz
Beam Bots (or just BB for short) is a framework for building fault-tolerant robotics applications in Elixir using familiar OTP patterns. ...
New
Damirados
Hello everyone. After busy few months I am happy to announce v0.1.0 of Emerge &amp; Solve. They are GUI (Emerge) and State management (S...
New
ausimian
Emily is an Elixir library that runs Nx computations on Apple’s MLX. Install it as the default Nx backend and Nx, defn, Axon, Nx.Serving,...
New
type1fool
I just stumbled on a newly redesigned elixir-lang.org. :tada: It looks like @Software_Mansion did the work, and I think it is generally a...
New
akoutmos
@hugobarauna and I (Alex Koutmos) have been hard at work on writing a book on Nerves that takes you from simply blinking LEDs to building...
New

We're in Beta

About us Mission Statement