我想幹涸此控制器:before_action:設置相當於在鳳凰城
defmodule Xyz.ExampleController do
use Xyz, :controller
alias XyZ.Shops
def a(conn, %{"id" => id}) do
product = Shops.get_product!(id)
tax = product.price * 0.15
...
render(conn, "a.html", foobar: foobar, product: product)
end
def b(conn, %{"id" => id}) do
product = Shops.get_product!(id)
tax = product.price * 0.15
...
render(conn, "b.html", foobar: foobar, tax: tax)
end
def c(conn, %{"id" => id}) do
product = Shops.get_product!(id)
tax = product.price * 0.15
...
render(conn, "c.html", foobar: foobar)
end
end
每個函數這個部分開始:
product = Shops.get_product!(id)
tax = product.price * 0.15
在Ruby on Rails的世界,我想把它調用before_action :setup
來調用控制器。
在鳳凰城實現這一目標的最佳方法是什麼?
你可以使用一個插件 - > https://hexdocs.pm/phoenix/plug.html,我求求你,不要把商業邏輯放到框架模塊中。 – JustMichael
該邏輯不應位於控制器IMO中。如果是我,我會定義一個像這樣工作的函數:'{product,tax} = Shops.get_product_and_tax!(id)'並且從每個動作調用它。 – Dogbert
比我會那樣做。我認爲將它放在一個插頭中會更清潔。但我很高興在每個操作中保留一行代碼。 – wintermeyer