es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo puedo interpolar una asignación dentro de un ayudante de enlace?

Tengo las siguientes rutas y acciones del controlador.

“`
scope “/”, StarTrackerWeb do
pipe_through(:browser)

get("/", PageController, :index)
get("/info/", PageController, :about)
get("/info/:name", PageController, :about)
get("/info/:name/:position", PageController, :about)

end

def about(conn, params) do
names = [“Jose”, “Chris”, “Jeffrey]

  render(
  conn,
  "information.html",
  name: params["name"],
  position: params["position"],
  names: names
   )

end

El objetivo es interpolar la asignación @position en este helper de enlace en mi plantilla.

    <%= for name <- @names do %>

  • <%= link "#{name} the ", to: Routes.page_path(@conn, :about) %>
  • <% end %>

Entonces, dado el URL “/info/jose/engineer”.

El texto del enlace generado debería ser:

jose the engineer

Sin embargo, no funciona ni llamar a las asignaciones directamente ni realizar interpolaciones.

<%= link "#{name} the @position ", to: Routes.page_path(@conn, :about) %>

<%= link "#{name} the #{position} ", to: Routes.page_path(@conn, :about) %>

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para interpolar la asignación @position dentro del link helper en el template, cambia la acción about en el PageController agregando position como un argumento a la función:

    def about(conn, %{"name" => name, "position" => position}) do
      names = ["Jose", "Chris", "Jeffrey"]
    
      render(
        conn,
        "information.html",
        name: name,
        position: position,
        names: names
      )
    end
    

    Luego, en el template, interpola el argumento position dentro del link helper:

    <ul>
      <% for name <- @names do %>
        <li><%= link "#{name} the #{position}", to: Routes.page_path(@conn, :about, %{name: name, position: position}) %></li>
      <% end %>
    </ul>
    

    Ahora, al acceder a la URL /info/jose/engineer, el texto del enlace generado será:

    jose the engineer
    

Comments are closed.