yaBliznyk

yaBliznyk

defmodule Promo.OrderView do
  use Promo.Web, :view
 alias Promo.Page

 def page_title(page = %Page{}) do
    for {tag, class} <- [h5: "hide-on-small-only", h6: "hide-on-med-and-up"] do
      content_tag tag, class: class do
        page.title <> page_sub_title(page.sub_title)
      end
    end
  end

   def page_sub_title(nil), do: ""
   def page_sub_title(sub_title) do
     "<br><small>" <> sub_title <> "</small>"
  end
end    

In view i see escaped html string with small and etc.
How to write helper function “page_title” what return to me:
h2 title + br + small sub_title /small /h2, but
only h2 title /h2 if sub_title do not exists??

Showing Posts 1 to 3

OvermindDL1

OvermindDL1

For any view helpers, first I have these at the top of my module:

  import Phoenix.HTML
  import Phoenix.HTML.Form
  import Phoenix.HTML.Link
  import Phoenix.HTML.Tag

Just for convenience sakes.

However, to do what you want:

  def page_sub_title(nil), do: ""
  def page_sub_title(sub_title) do
    ~e"""
    <br><small><%= sub_title %></small>
    """
  end

The ~e sigil when you import the Phoenix view stuff gives you inline ‘eex’ templating, just like eex files. This is the best way to work with it.

However, you can always wrap your output in a {:safe, content} tuple, but that is not recommended unless you are sure it is entirely safe, and considering I do not see where sub_title is coming from (possibly user input through database or so), I’d use eex to make sure everything gets properly escaped or bad bad bad things can happen.

yaBliznyk

yaBliznyk OP

Thanks for reply!
But now i have an error “argument error” in view.
This code does not work

defmodule Promo.OrderView do
  use Promo.Web, :view
  alias Promo.Page

  def page_title(page = %Page{}) do
    for {tag, class} <- [h5: "hide-on-small-only", h6: "hide-on-med-and-up"] do
      content_tag tag, class: class do
        page.title <> page_sub_title(page.sub_title)
      end
    end
  end

  def page_sub_title(nil), do: ""
  def page_sub_title(sub_title) do
    ~e{<br><small><%= sub_title %></small>}
  end
end
yaBliznyk

yaBliznyk OP

I find correct answer. Thanks for help

def page_title(page = %Page{}) do
    for {tag, class} <- [h5: "hide-on-small-only", h6: "hide-on-med-and-up"] do
      content_tag tag, class: class do
        do_page_title(page.title, page.sub_title)
      end
    end
  end

  defp do_page_title(title, nil), do: title
  defp do_page_title(title, sub_title) do
    ~e{<%= title %><br><small><%= sub_title %></small>}
  end
— All posts loaded —

Where Next? Top

Trending in Questions Top

stjefim
Hello! Suppose you are building workflow (order / task / payment) processing system with the following requirements: Each workflow con...
New
water
I’m aware of 2 such projects, are there others? git: GitHub - team-alembic/realworld: A fullstack Phoenix LiveView application with back...
New
peck
Hi everyone. My team and I have been working on a fairly modest app based around video streaming and chat, but we’ve landed a customer t...
New
bradley
I really like the adapter patterns that ecto, nebulex, waffle, etc. use and would love find something similar for a key management servic...
New
unaware8150
Hello folks! So at work, we are seeing some situations where we have to define some “fixed” strings that are used across the codebase in...
New
Alvinkariuki
How Can I Optimise Compile Time Dependencies I have been building an elixir application for about 2 years now. Many modules and files ha...
New
leoschweizer
Hi, we run different LLM models across a cluster, with each node loading a configurable subset. Model-specific queues let nodes consume ...
New

Other Trending Topics Top

mudasobwa
I fully migrated to my own harness from Anthropic/Gemini and I think it’s time to share it. Welcome DSH, the DeepSeek Harness, fully writ...
New
KristerV
Hey. Is there anyone here who creates agents in their apps? Not talking about using agents, but creating them. I’m finding it pretty diff...
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
juhalehtonen
There has been a thread to discuss the Stack Overflow Developer Survey on this forum every year since 2018, so here’s yet another one for...
New
webofbits
With AI doing more of the implementation work, I’ve been wondering how much coding I should deliberately keep doing myself. My main conc...
#ai
New
budgie
I love Elixir. It’s one of 2 programming languages I’ve ever fallen in love with. But I don’t use it anymore. Serverless was the promis...
New

We're in Beta

About us Mission Statement

Options

Thread Display Mode




Thread Preview

Skip Thread Previews