elixir - 在phoenix框架(elixir)中更改Url以接受字符串而不是id

标签 elixir phoenix-framework ecto

我正在尝试在 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_info.html.eex”的 html 页面

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

相关文章:

elixir - 如何在生产环境中永远运行 Phoenix

elixir - 如何从管道函数链中捕获值?

logging - 如何在 Elixir 中读取 HTTP 分块响应并向客户端发送分块响应?

elixir - 如何在我的模型文件中使用 Repo 模块

elixir - Elixir 是否有一个变量来保存当前文件的名称(ala Ruby 的 __FILE__)?

database - Ecto delete many_to_many join 同时保持连接记录完整

elixir - 使用 ecto 2.0 更新多条记录

elixir - `mix ecto.rollback` 和 `mix ecto.migrate` 命令的调试级别日志记录

mysql - 如何通过 Ecto 向 MySQL 提供索引提示

elixir - 具有 has_many 关系的 Phoenix 模型不会更新 w/o 预加载关系