有没有办法在凤凰城定义自定义路线?

时间:2016-05-17 04:50:14

标签: elixir phoenix-framework

让我们说我想创建一个resources,并为其添加一些自定义操作,rails中的模拟是:

resources :tasks do
  member do
    get :implement
  end
end

这不仅会给我带来7条标准路线,还会带来1条新路线:

GET /tasks/:id/implement

我怎么能在凤凰城做到这一点?

4 个答案:

答案 0 :(得分:22)

我想稍微改善**the file.py:** """ dependencias: sudo pip install dopy pyopenssl ndg-httpsclient pyasn1 """ import os from dopy.manager import DoManager import urllib3.contrib.pyopenssl urllib3.contrib.pyopenssl.inject_into_urllib3() api_version = os.getenv("DO_API_VERSION") api_token=os.getenv("DO_API_KEY") #do = DoManager(cliend_id, api_key) do = DoManager(None, api_token, api_version=2) keys = do.all_ssh_keys() print "ssh key name\tid" for key in keys: print "%s\t%d" % (key["name"], key["id"]) print "Image name\tid" imgs = do.all_images() for img in imgs: if img["slug"] == "ubuntu-14-04-x64": print "%s\t%d" % (img["name"], img["id"]) print "Region name\tid" regions = do.all_regions() for region in regions: if region["slug"] == "nyc2": print "%s\t%d" % (region["slug"], region["id"]) print "Size name\tid" sizes = do.sizes() for size in sizes: if size["slug"] == "512mb": print "%s\t%d" % (size["slug"], size["id"]) 的答案:

Dogbert

路线末尾唯一添加resources "/tasks", TaskController do get "/implement", TaskController, :implement, as: :implement end

因此,您将获得名为as: :implement的路线,而不是丑陋的task_implement_path

答案 1 :(得分:15)

您可以在get的{​​{1}}块中添加do

网/ router.ex

resources

resources "/tasks", TaskController do get "/implement", TaskController, :implement end

$ mix phoenix.routes

答案 2 :(得分:11)

这是另一种解决方案:

scope "/tasks" do
  get "/:id/implement", TasksController, :implement
  get "/done", TasksController, :done
end
resources "/tasks", TasksController

implement操作有成员路由,done操作有集合路由。

您可以通过此函数调用获取前者的路径:

tasks_path(@conn, :implement, task)

请注意,您应该在<{em} resources块之后放置scope。否则,凤凰城会将/tasks/done视为show行动的路径。

答案 3 :(得分:-1)

看起来收集路线必须是:

get "tasks/implement", Tasks, :implement # collection route

我不认为phoenix有像rails这样的成员/集合资源路由。

我发现这个链接是他们稍微谈论收集路线并给出一个例子,就像我上面提到的那样:

https://github.com/phoenixframework/phoenix/issues/10