我有一个函数,它接受一个集合,它是一个id/项元组列表,应该替换给定的项、id和新项
def update_item(collection, id, new_item) do
Enum.map(collection, fn
({ ^id, _ }) -> { id, new_item }
(entry) -> entry
end)
end
如果出现编译器错误和消息未绑定变量^id,则此操作失败。我该怎么做?有没有一个好方法可以做到这一点,或者我应该用另一种方
我想为我的网站运行一个angularJS前端和一个phoenix后端。我希望我的根路由将用户引导到静态目录中的一个预构建页面,其中包含我的angular客户端,然后使用phoenix运行API。我在过去使用ruby on rails通过如下路由匹配实现了这一点:
get '/', to: redirect('/foobar.html')
菲尼克斯有没有类似的方法?现在没有。您需要创建一个控制器,然后在控制器中:
defmodule MyApp.RootController do
use
在Elixir中,从URL下载文件/图像的代码是什么样子的
谷歌搜索似乎带回了如何下载长生不老药本身。看看,一个长生不老药的HTTP客户端。您只需向指向图像(或文件,不相关)的url发出GET请求即可:
HTTPoison.get/1返回一个HTTPoison.Responsestruct;为了得到响应的主体,我匹配了这个结构。现在body变量包含图像数据(仅为二进制);您可以将其写入文件:
File.write!("/tmp/image.png", body)
你看:)
即使不使用httpo
我正在部署我的第一个Phoenix应用程序,并且在我的环境文件中指定了一个变量的值(dev.exs和prod.exs)
现在我想弄清楚如何在我的控制器中访问它们
#config/dev.exs
配置:my_应用程序,MyApp.Endpoint,
http:[端口:4000],
调试错误:true,
缓存\u静态\u查找:false,
我的价值:“发展价值”
#config/prod.exs
配置:my_应用程序,MyApp.Endpoint,
http:[端口:{:系统,“端口”}],
url
我在phoenix项目中使用它来测试控制器和回购协议之间的交互
我在控制器中编写了此测试:
test_with_mock "list all entries on index", %{conn: conn}, Repo, [:passthrough], [] do
conn = get conn, board_column_path(conn, :index, 1)
assert called Repo.all from(c in Column, where: c.board_id =
我目前正在尝试从Youtube评论中解码一些base64 CDATA。它似乎将其解码为二进制格式,但不确定如何将其转换为字符串
<?xml version="1.0" encoding="utf-8"?><root><comments><![CDATA[EAEYACCQTg==]]></comments></root>
还有长生不老药
iex> Base.url_decode64!("EAEYACCQTg==")
我正在构建一个使用hackneyErlang项目的Elixir应用程序,我无法使用hackney提供的方法。
我的mix.exs如下所示:
defmodule Connecter.Mixfile do
use Mix.Project
def project do
[app: :connecter,
version: "0.0.1",
elixir: "~> 1.2-dev",
build_embedded: Mix.env == :prod,
我知道我可以这样调用GenServer
GenServer.call(pid, request)
# using a pid
GenServer.call(registered_name, request)
# if I registered the process with a name
还是像这样
GenServer.call(pid, request)
# using a pid
GenServer.call(registered_name, request)
# if I regi
我有一个Elixir模块,可以导入一些函数。我想用我自己的函数来修补其中的一个函数。可能吗?我该怎么做
更新示例
我举的具体例子是,对于task Mix.Tasks.Deps.Compile,我想向“Compile”函数添加一些功能
Mix.Tasks.Deps.Compile模块相当深入地嵌入到Mix框架中。我想做最小的更改,同时添加我想要的额外功能。我想添加的功能是cond do块的另一个条件。简单的答案是:你不能。没有猴子在横梁上打补丁的想法
较长的答案是BEAM中的模块是延迟加载的,因
标签: Elixir
phoenix-frameworkecto
背景:
我正在写一个简单的问答网站。与Stackoverflow非常相似,在这个站点中,用户可以喜欢/上传问题、答案或评论
问题:
我正在努力编写一个能够返回用户喜欢/赞成的所有问题、答案或评论的Ecto查询
具体来说,我想写一个查询:
将特定用户向上投票的所有问题、评论和答案作为单个列表返回
并将问题、答案和评论列表按投票时间进行排序
根据我的理解,这个问题似乎需要联合
因此,我想知道是否有人可以告诉我,或者为我指出正确的方向,在Ecto中处理这样一个问题。谢谢你的帮助
以下是相关模型的模式
我尝试将其用作Phoenix应用程序的cronjob工具。它解决了我的开发系统中的一个问题。但我不能让它在生产中运行/node\u modules/brunch/bin/brunch b-p&&MIX\u ENV=prod MIX do phoenix.digest,release--ENV=prod--upgrade总是以以下错误结束:
Generated abc app
==> Assembling release..
==> Building release abc:1.2.5
标签: Elixir
phoenix-frameworkecto
我有一个phoenix应用程序,在所有型号中都使用时间戳。但是,我希望扩展时间戳,以便无论何时在模型中包括时间戳,它都会添加以下字段:
created_at (utc datetime)
updated_at (utc datetime)
created_at_utc (utc timestamp of created_at field)
updated_at_utc (utc timestamp of updated_at field)
如何扩展自动生成这些字段的timest
有没有办法简化此代码:
def test do
var1 = func1()
|> func2()
|> func3()
var2 = if var1 == nil do
var1
else
func4(var1)
end
func5(var2)
end
我希望避免创建var2并就地返回结果。您可以将if的返回值通过管道直接传递到func5:
if var1 == nil do
var1
els
标签: Elixir
phoenix-frameworkecto
是否可以组合一个查询,返回所有模型(如Post)及其关联(如Like)的聚合计数
Repo.all(from p in Post,
join: l in Like,
where l.post_id == p.id,
group_by: p.id,
select: {p, count(l.id)
我尝试过使用上面的group_by和select,但这只是部分有效。查询结果排除了所有不喜欢的帖子
如果这是不可能的,那么处理此问题的最佳方法是什么?第一件事是对查询
标签: Elixir
phoenix-frameworkecto
运行mix phx.gen.json对象项发布时间:native\u datetime输出以下文件/测试:
迁移:
defmodule App.Repo.Migrations.CreateItems do
use Ecto.Migration
def change do
create table(:items) do
add :published_at, :naive_datetime
timestamps()
end
end
end
测
在创建联盟时我还试图创建一个名为UsersLeagues的加入关联。以下是我目前的尝试:
def changeset(struct, params \\ %{}) do
struct
|> cast(params, [:name])
|> validate_required([:name])
|> put_assoc(:users_leagues,UsersLeagues.changeset(%UsersLeagues{}, user
我将一个变量设置为player\u id,它是一个随机uuid。但它匹配了17张不同地图中的1张。我希望能够将变量与其他映射进行匹配,并返回匹配的映射。我怎样才能在长生不老药中做到这一点
当前尝试和数据:
以下是17张地图中的3张:
播放器id设置为e8c0b33f-43b3-4490-865f-ed919d015bb2
查看其中一个id如何匹配玩家id?我如何将这两个匹配起来,并对其进行范围分析,使其返回以下内容:
%{"abbr_name" => "R.Baker", "birth_p
我在用EEx做邮件模板
我已将其集成到我的模块中,如下所示:
defmodule Blackbox.ReportHandler do
use GenServer
import Swoosh.Email
@email EEx.compile_file("web/templates/mail.html.eex")
def init([actions: actions]) do
{:ok, %{actions: actions, name: "none_yet", rep
给定一个浮点,比如(2.0),我想将其转换为整数类型。据我所知,Integer.parse似乎只适用于字符串
Integer.parse(2.0)
(FunctionClauseError) no function clause matching in Integer.count_digits/2
使用trunc(2.0)或round(2.0)。这些是自动导入的,因为它们是的一部分,并且它们也可以在guard子句中使用。没错,Integer.parse/2函数需要一个二进制作为参数,如中所示。
elixir laguagem的web应用程序框架有哪些选项?最近我在学习Phoenix(),但我不确定这是最好的还是唯一的选择。对我来说,这是一个太多的一般性问题,你最好在Elixir论坛上获得关于Elixir Slack的有效回复,而不是在这里
这是长生不老药的最佳选择
为什么选择凤凰城
长生不老药核心团队的成员是凤凰核心团队的成员
它是所有Elixir web框架中最成熟的
它是贡献最大的Elixir web框架
它是最流行的Elixir web框架
你有最好的凤凰城资源-书籍,教程,视
我不熟悉长生不老药。
我正在发送一个带有application/json正文的POST请求。我用的是邮递员。当我发送带有POST请求的json正文负载时,我得到一个服务器错误。i、 e:
%Plug.Parsers.ParseError{
exception: %UndefinedFunctionError{
arity: 1,
exports: nil,
function: :decode!,
module: Poison,
reason: nil
例如,我为stackoverflow创建API客户端。我需要将access\u令牌传递到每个端点
我可以这样做:
StackClient.answers(access_token, params)
StackClient.badges(access_token, params)
StackClient.start(access_token)
StackClient.answers(params)
StackClient.badges(params)
但我不希望将access\u token传
我想为通配符路由使用路径帮助器,定义如下:
get("/thing/*sub_path", ThingController, :index)
确实存在路径帮助器,但它确实不是我所需要的:
iex(3)> MyAppWeb.Router.Helpers.thing_path(MyAppWeb.Endpoint, :index, sub_path: "test/thing")
"/thing?sub_path=test%2Fthing"
相反,我需要的是:
"/thing/test/thi
所以我想验证elixir(phoenix框架)中的电子邮件输入字段
我得到这个错误
** (BadArityError) &String.downcase/1 with arity 1 called with 2 arguments (:email, "HARRY@POTTER.com")
(ecto) lib/ecto/changeset.ex:1573: Ecto.Changeset.validate_change/3
这是我的密码
|> validate
ExUnit提供了一些获得测试结果的方法。我不知道如何使用它和它
我在一个文件中有多个测试。如何在最后生成测试名称和状态等结果
我正在用hound编写测试。
提前感谢。首先,你可以使用它来达到这个目的。最好的调优可能是在调用ExUnit.start()之前引入自己的格式化程序并将其传递给。有点像下面(根据您的需要进行调整。)
defmodule MyApp.CLIFormatter do
@模假
使用GenServer
def init(opts),do:{:确定,opts}
def handl
我正在学习一个教程,应该把节点连接在一起。我将使用以下工具启动总共四个终端窗口:
iex --sname one (two, three etc)
然后我就跑
Node.connect(:two@DAL-SW-JH-LT)
** (ArithmeticError) bad argument in arithmetic expression: :two@DAL - SW
:erlang.-(:two@DAL, SW)
错误显示:
**(算术错误)算术表达式中的参数错误::two@DA
标签: Elixir
phoenix-frameworkwallaby
我想知道如何在会话中登录用户,而不必在测试环境中创建工作循环路由或通过标准用户流登录用户。有没有办法设置cookie/会话,以便有一个当前用户
下面是一些关于它的讨论:
由于cookies可以通过Wallaby读取和设置,我想知道如何使用cookies设置当前用户并绕过手动登录流
理想情况下,我想要的是:
test "visit dashboard", %{session: session} do
{:ok, user} =
MyApp.Accounts.create_user(
标签: Elixir
phoenix-frameworkecto
我不明白为什么会出现这样的错误:
Abc.Maps.Location.create_location(%{name: "USA", is_country: true})
** (FunctionClauseError) no function clause matching in Ecto.Repo.Schema.insert/4
我知道没有insert/4,但我不明白为什么validate\u呈现\u parent/1的\u首先会产生问题。我犯了什么错
如果位置不是国家/地区,我想验证是否
我有两种型号,产品和类别。我可以添加/编辑具有所选类别的产品,但现在在设置Arc后,我遇到错误:当我尝试添加或编辑产品时,分配@categories在eex模板中不可用。有没有人知道我可能做错了什么,或者我的代码中缺少了什么?我正在使用Phoenix 1.4
我的模式:
schema "products" do
field :avdate, :date
field :description, :string
field :name, :string
field
我已经成功地编写了看起来有效的代码,但我不知道为什么
上下文:一个项目有许多预算项目,这些项目与我正在展示的项目一起预加载
根据预算项目列表,我计算项目的全部预算如下:
def总计\u预算预算\u要做的项目
Enum.reducebudget_项目,fn项目,acc->
%{金额单位:item.amount金额单位+acc.amount金额单位}
结束[:金额单位:美分]
|>以欧元计价
终止
def值(单位:欧元)金额(单位:美分)
金额(单位:美分/100)
|>:erlang.float_
我正在一个kubernetes集群上运行一个新的Phoenix Liveview应用程序,该集群提供给我使用,虽然HTTP工作正常,但我的websockets连接失败。即使请求的标题要求升级连接,我还是得到了一个426升级要求。我怀疑我的浏览器和Phoenix之间的部分线路正在删除升级标题,但我想知道是否确实如此
我已经尝试在我的端点中添加一个简单的插件来记录连接,它适用于常规HTTP请求,但不拦截websockets请求。是否需要在其他地方插入插件或添加一些日志来转储这些请求(特别是它们的头)
标签: Elixir
phoenix-frameworkecto
我有一个从数据库列中获取的exto.DateTime实例,我需要检查这个日期是否超过5分钟
最好的方法是什么
更清楚地说,这就是我在ruby中需要的->
updated_at < (Time.now - 5.minutes)
更新时间
为什么在一个EXTOchangeset方法中,您将参数设置为默认的:emptyatom?e、 g
def changeset(user, params \\ :empty) do
...
这是否允许您使用nil为参数调用changeset方法?编程Phoenix中对此进行了解释:
克里斯说:如果没有指定参数,我们不能默认为空映射,因为这与提交空白表单没有区别。相反,我们将参数默认为atom:empty。按照惯例,Ecto将生成一个无效的变更集,参数为空
所以:empty被用作占位符,以便
有没有办法在理解中添加循环计数器
例如,不带计数器的理解:
for c <- ["a", "b"], do: c # => ["a", "b"]
c[“a”,“b”]
我怎样才能加上计数器呢?大概是这样的:
for c <- ["a", "b"], do: {counter, c} # => [{0, "a"}, {1, "b"}]
对于c[{0,“a”},{1,“b”}]
使用:
iex(1)>用于{c,counter}
iex(1)>
我是新来凤凰城的,来自罗尔。看起来这些视图类似于Rails帮助程序,可能是放置帮助程序函数的地方
如果这是真的,我们如何从视图中访问连接或连接的分配
这是我的问题示例
该应用程序显示所有用户的列表。但我只想为当前登录的用户显示API令牌。因此,我认为UserView中的方法适合在模板中执行类似操作:
<b><%= first_name(@user) %></b> (api_token: <%= display_token(@user) %>)
非
我在测试控制器发送参数时遇到一些问题:
我正在发送以下地图:
params = %{
"filter" => %{
"type" => "all",
"conditions" => [
%{"column" => "price", "comparator" => "equals", "value" => "120", "type" => "number"}
]
}
}
在通话中:
conn = get c
我要删除所有换行符:
aaa = """
fdsfds fdsfds
fdsfdsfds
fdsfdsfds
""" |> String.strip("\r\n")
我得到:
argument error
这个怎么了
这个怎么了
String.strip仅支持删除一个字符。Elixir试图将“\r\n”转换为单个字符(),此时会引发该错误:
我怀疑这是你想要的,正如你所说的“我想删除一条新线的所有符号”。要删除所有\r和\n,您可以使用字符串。替换两次:
iex(4)> aa
标签: Elixir
phoenix-frameworkarithmetic-expressions
我有一张订单表格。此表的一列是总价
通过将订单项目和项目属性
当用户删除一个order\u项目时,我想让它删除所有与order\u项目相关的item\u属性。因此,在计算总价时,它应该扣除订单项目和项目属性的价格
为此,我编写了如下代码
order_item_total = Repo.one!(from p in Pos8.OrderItem, where: p.order_id == ^order_id, select: sum(p.item_total))
total_item_attrib
我是Elixir的新手,我想围绕API编写一个包装器来了解该语言,我正在考虑通过身份验证的人使用API的方式,他们显然需要一个令牌,但我如何才能对用户进行身份验证?例如,在许多语言中,您都可以使用:Api.Client.new(“token”)或类似的东西,我一直在Github中搜索一些Api包装器,以了解人们是如何实现这些功能的,一些人使用start\u link,另一些人说您应该使用export-Api\u-KEY=“Api-KEY”,其他人则将密钥放入config/config.ex文件中
标签: Elixir
phoenix-frameworkphoenix-channels
我希望能够在phoenix presence中通过:meta映射传递用户元数据,以便从JavaScript端访问它。更具体地说,我希望能够推送图像文件路径(字符串),并将它们与我的状态列表中的每个用户关联。文档给出了覆盖fetch/2函数以将用户模型数据添加到:meta映射中的示例:
def fetch(_topic, entries) do
query =
from u in User,
where: u.id in ^Map.keys(entries),
Elixir语言本身具有以下模块和一些方法,例如:
defmodule Calendar.ISO do
@spec leap_year?(year) :: boolean()
@impl true
def leap_year?(year) when is_integer(year) and year >= 0 do
rem(year, 4) === 0 and (rem(year, 100) > 0 or rem(year, 400) === 0)
end
e
假设我有帖子,评论和投票的表格
投票表有一个方向列,该列为1、0或-1
我想查询所有帖子,以及每个帖子的评论数,以及投票总数。方向
理想情况下,使用Post模型上的可组合查询,这是否可以作为EXTO中的子查询实现
目前我拥有的是:
def count_comments(query) do
from p in query,
left_join: c in assoc(p, :comments),
select: {p, count(c.id)},
group_by: p
标签: Elixir
producer-consumerconsumerex-unitgenstage
我找到了一些关于如何测试生产者的资源,但是我找不到任何可以显示如何测试消费者的资源
在producer中,我创建了一个虚拟消费者,一切正常,但在consumer中,我正在努力进行测试
defmodule DataProducer do
use GenStage
def start_link([]) do
GenStage.start_link(__MODULE__, 0, name: __MODULE__)
end
# {:qu
过滤GenServer终止事件日志输出的最佳方法是什么?似乎Elixir.Logger允许:translator\u inspect\u opts在这里提供一些配置,但我不清楚如何处理以下情况:
Genserver终止时的默认日志输出包括接收到的最后一条消息和状态,如下所示:
10:06:00.165 [error] GenServer #PID<0.378.0> terminating
** (FunctionClauseError) no function clause matc
我有一个长生不老药生命游戏的实现,它将一个“棋盘”打印到STDOUT,我想在打印下一个版本的棋盘之前清除屏幕。我检查了,我想这就像调用System.cmd(“clear”,[])一样简单,但这似乎不起作用:
iex(1)> System.cmd("clear", [])
{"\e[H\e[2J", 0}
看起来好像返回了一些转义字符,但我不确定这是什么意思我的问题是为什么System.cmd(“clear”,[])不能工作?或者我认为它应该清除屏幕是错误的(为什么)?
显然,iex有一个
我想知道是否有可能在EXTO中将两个查询组合在一起
我想创建一个函数,它接受一个EXTO查询,并根据具体情况对其进行修改
例如,假设我们有一个users表,允许输入重复的用户名,用户创建以下查询
query = from(u in "users", select: u)
select_all_unique_users(query)
我希望select_all_unique_users函数接受查询并添加到查询中,以便它只选择不同的用户名
这只是一个例子,我知道我可以在表上创建一个唯一的_索引,以
在Phoenix/Elixir样板web应用程序中,我描述了典型的结构,其中简单的HelloController使用HelloView组件呈现hello/文件夹中的模板。这样行。
现在假设我想添加snake\u view.exview组件。此视图依赖于Phoenix,其行为与渲染模板的其他普通视图稍有不同,因为它具有render方法以及其他功能:
defmodule HelloWeb.SnakeView do
use Phoenix.LiveView
# ..
def rende
我在中定义了以下路线
router.ex
scope "/api/v1", ProjWeb do
pipe_through :api
post "/sign_up", UserController, :sign_up
post "/sign_in", UserController, :sign_in
end
下面是控制器的操作
def sign_up(conn, %{"user" => user_params}) d
早上好!我已经到了挣扎的时刻。总而言之,我试图创建一个模式/模型,该模式/模型在关联的模式/模型已经存在的地方具有关联。我发现的每个示例都更像Rails嵌套属性。以下是我的各种代码:
具有以下关联的架构(&其变更集函数):
schema "payor_procedure_mappings" do
belongs_to :payor, Payor
belongs_to :procedure, Procedure
field :payor_procedure_name, :string
标签: Elixir
phoenix-frameworkecto
以下是我的原始迁移:
def change do
create table(:clipboard_items) do
add(:clipboard_id, :integer)
timestamps()
end
end
在这次迁移过程中,我忘记为每个字段添加引用。应该是这样的:
def change do
create table(:clipboard_items) do
add(:clipboard_id, references(:clipboards))
上一页 1 2 ...
82 83 84 85 86 87 88 ...
下一页 最后一页 共 125 页