我正在尝试在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/