我有一个像这样制作“contacts.csv”的函数。
def write(people) do
[["name", "phone_number"]]
|> Stream.concat(people |> Stream.map(&[&1.name, Formatter.remove_international_code(&1.phone_number)]))
|> CSV.encode()
|> Enum.into(File.stream!("contacts.csv"))
end
Run Code Online (Sandbox Code Playgroud)
我希望我的客户点击按钮下载该文件。所以我是这样做的..
在 router.ex 中
get "/csv/:id", CsvExportController, :export
Run Code Online (Sandbox Code Playgroud)
在控制器文件中
def export(conn, %{"id" => phonebook_id}) do
conn
|> put_resp_content_type("text/csv")
|> put_resp_header("content-disposition", "attachment; filename=\"contacts.csv\"")
|> send_resp(200, export_contacts_from_phonebook(phonebook_id))
end
def export_contacts_from_phonebook(phonebook_id) do
Contact.get_people(phonebook_id)
|> CsvFormatter.write()
end
Run Code Online (Sandbox Code Playgroud)
在 CsvFormatter.ex 中
def write(people) do
[["name", "phone_number"]]
|> Stream.concat(people |> Stream.map(&[&1.name, Formatter.remove_international_code(&1.phone_number)]))
|> CSV.encode()
|> Enum.sort()
|> Enum.into(File.stream!("contacts.csv"))
end
Run Code Online (Sandbox Code Playgroud)
并尝试但出现错误
no function clause matching in Plug.Conn.resp/3
Run Code Online (Sandbox Code Playgroud)
我怎样才能在控制器文件中做到这一点?
我在显示页面中有客户联系人列表。它是分页的。
我想在这个列表中添加搜索和排序。我正在研究rummage,但似乎不担心 phoenix 1.3。我在混合 deps.get 时遇到错误,抱怨需要凤凰版本。
第二个选项是turbo_ecto。但我很难理解和运行。
我认为搜索和排序是大多数人实现的命令功能。你怎么做到这一点?我该怎么做?
我正在尝试制作一个以phoenix-framework为后端的shopify应用程序。我一直在按照本教程在 Shopify 后台加载我的应用程序,我需要修改x-frame-options
标头。
这是我的插头:
@doc false
def init(opts \\ %{}), do: Enum.into(opts, %{})
@doc false
def call(%{params: %{"shop" => shopify_domain}} = conn, _opts) do
IO.puts("++++++++++ Plug Call ++++++++++++++")
IO.inspect(shopify_domain)
# %{"shopify_domain" => shopify_domain_only} = shopify_domain
shop = ShopifyApp.find_shop_by(shopify_domain)
allow_shop_or_halt(conn, shop)
end
def call(conn, _opts), do: conn
defp allow_shop_or_halt(conn, nil), do: Conn.halt(conn)
defp allow_shop_or_halt(conn, shop) do
conn
|> Conn.put_private(:shop, shop)
|> Conn.put_resp_header("x-frame-options", "ALLOW-FROM https://#{shop.shopify_domain}/")
end
Run Code Online (Sandbox Code Playgroud)
但 Chrome 浏览器的控制台抱怨说:
加载时遇到无效的“X-Frame-Options”标头.....:ALLOW-FROM https://skbeautysupply.myshopify.com/ '不是可识别的指令。标头将被忽略。
我在这里缺少什么?