2016-02-28 55 views
0

使用mix phoenix.gen.html,我创建了一个新的外生模型和相关的路由,并添加了resources "/users", UserController我router.ex。正如预期的那样,这个自动生成的网址如/users/:id,/users/:id/edit凤凰:使用资源时,自定义URL结构呢?

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

如果它使事情变得更加容易:我并不特别在意验证:slug,或确保它是正确的,如果客户端发出一个错字。我只是希望凤凰城接受/生成具有该结构的网址。

回答

-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

特定用户