Phoenix:使用资源时的自定义URL结构?

时间:2016-02-28 23:02:18

标签: elixir phoenix-framework

使用mix phoenix.gen.html,我创建了一个新的Ecto模型和相关路由,并将resources "/users", UserController添加到我的router.ex中。正如预期的那样,这个自动生成的网址包括/users/:id/users/:id/edit

我想将网址结构更改为/users/:slug/:id/,其中slug是User模型上的字段。有没有办法在仍然使用Phoenix资源路由时指定这个新的URL结构?

如果它让事情变得更容易:我并不特别关心验证:slug,或者如果客户输入错误则确保它是正确的。我只是希望Phoenix接受/生成具有该结构的URL。

1 个答案:

答案 0 :(得分:-2)

假设我有几个用户分组。我想从团队中访问特定用户。

我可以将它添加到router.ex

    get "/:team_name/:user_name", ProfileController, :show_in_team

在profile_controller.ex中,我添加了

    def show_in_team(conn, %{"team_name" => team_name, "user_name" => user_name}) do
        render conn, "show.html", user_name: user_name, team_name: team_name
    end

现在我可以使用localhost:4000/team1/user1

访问该特定用户