我正在尝试在phoenix应用程序中实现永久链接。

目标是将localhost:4000/products/1更改为localhost:4000/products/productname

我尝试过在permalinks implementation in rails上跟随Ryan Bates剧集
但是无法在phoenix中为模型找到to_param函数。

请帮忙。

最佳答案

不确定这是否是您要的,但是您可以进行以下操作:

浏览器堆栈中的router.ex

get "/products/:product_name", ProductController, :get_product_by_name

product_controller.ex
def get_product_by_name(conn, %{"product_name" => product_name}) do
  product = Repo.get_by(Product, name: product_name)
  render(conn, "product_info.html", product)
end

如果您希望您的应用程序将基于名称的特定产品作为html页面返回,那应该就是您所需要的一切,自然地,您将需要在模板/product下有一个名称为“product_info.html.eex”的html页面。

关于elixir - 在phoenix框架(elixir)中将Url更改为接受字符串而不是id,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34570612/

10-09 02:38