Rob*_*nki 10 elixir ecto phoenix-framework
我试图在凤凰应用程序中实现永久链接.
目标是将localhost:4000/products/1更改为localhost:4000/products/productname
我尝试跟踪Ryan Bates的一集关于rails中的永久链接实现, 但是无法为凤凰城的模型找到一个to_param函数.
请帮忙.
Jos*_*lim 22
除了Wobbley的回应之外,to_paramPhoenix还通过协议实现.例如,以下是如何更改产品的URL生成方式:
defimpl Phoenix.Param, for: MyApp.Product do
def to_param(%{name: name}) do
"#{name}"
end
end
Run Code Online (Sandbox Code Playgroud)
编程凤凰也显示了一个更复杂的例子(免责声明:我是其中一位作者).
不确定这是否是你要求的但是你去了:
router.ex在浏览器堆栈中
get "/products/:product_name", ProductController, :get_product_by_name
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
如果您希望应用程序根据名称将特定产品作为html页面返回,那么这应该就是您所需要的,当然您需要在模板/产品下有一个名为"product_info.html.eex"的html页面
| 归档时间: |
|
| 查看次数: |
1545 次 |
| 最近记录: |