我试图对运行mochixpath返回的这些值进行模式匹配。模式显然是[elemName,htmlAttrs,children],但我真正需要的是UserNameA和“这是一条消息”
本质上,我使用xpath输出的解析xml来获取用户名和它们发送的消息。我对elixir和模式匹配的概念非常陌生,因此非常感谢您的帮助。输出有问题,因为当我将其复制到控制台时,输出会出现语法错误,所以我假设您有tr,其中包含td、img和其他td
模式匹配可用于以这种方式展开。比方说,您的整个数据都在变量data中,您
我想从长生不老药项目使用
我当前的mix.exs如下
def application do
[erl_opts: [parse_transform: "lager_transform"]]
end
defp deps do
[{:lager, github: "basho/lager"}]
end
我想使用lager将日志输出到文件。
如何设置日志文件路径?
(启动应用程序后是否可以更改此文件路径?)
并且,我想使用
如何设置上述配置?这里有一个关于Elixir啤酒的最低设置:
#
我正在尝试创建一个用于图像上传和下载的API。我使用Arc进行图像上传(本地存储),使用Arc.exto将上传的图像附加到用户模型上。
API允许用户上传多个图像。当我上传不同的图像时,Arc成功地针对用户保存了每个图像
我的问题是,如何上传多个图像并将这些图像引用存储在数据库中。当前,Arc不断替换相同的图像引用
schema "users" do
field :name, :string
field :age, :integer
field :gender, :s
我有多个mix任务要连续运行。使用其他构建工具,可以使用一条语句运行任务,这可以节省第一个任务之后的启动开销。如何使用Elixir的mix命令完成此操作?用逗号分隔任务列表,并将它们添加到mix do:mix do task1、task2、task3:
mix do deps.get, run hello.exs, ecto.migrate
例如,上述任务在一次调用mix中运行deps.get、run hello.exs和exto.migrate,您可以在mix.exs中放置别名并使用它
例如
我用字符串“2”创建了一个映射,作为键之一:
iex(14)> map = %{:a => 1, "2" => 2, :b => 3}
%{:a => 1, :b => 3, "2" => 2}
现在我无法匹配它。例如,如何获取与“2”关联的值?我尝试了以下操作,但出现以下错误:
iex(23)> %{a: c, "2" z} = map
** (SyntaxError) iex:23: syntax error before: "2"
iex
标签: Elixir
phoenix-frameworkecto
我在一个EXTO模型中有几个字段,我想为它们插入a)默认值b)在插入时生成值。我该怎么做?在“变更集”中,我应该在哪个函数中执行此操作?是的,通常用于此类操作的地方是变更集函数。如果需要区分插入和更新时发生的情况,可以定义多个变更集函数,并在更新或插入数据时调用相应的函数。例如:
defmodule MyApp.Schema do
#...
def insert_changeset(struct, params) do
struct
|> common_chang
我有一个两个人聊天的应用程序。但在他们聊天之前,双方都必须按“接受”
在前端,我有一个调用此函数的按钮:
function acceptMatch() {
channel.push("accept_match", {
"matched_client_email": matchedClientEmail,
});
}
在我的凤凰频道中,我有以下内容(这是不完整的,因为我不知道该做什么):
实际上,您可能会在user\u socket中的connect中将此特定PID或代理名称传递
我正在为颜色编写一个自定义(序列化并解析为CSS颜色)
该行为指定回调应返回:error,除非成功。它不允许返回错误原因,当与变更集一起使用时,将生成通用的“is invalid”错误描述
在无效(不可压缩)输入的变更集中,允许更好的错误消息的最佳方式是什么?我想创建一个用于变更集的validate\u color函数,但如果强制转换失败,该字段将已经存在一般错误。这可能从Ecto v3.0.0开始:
返回{:error,keyword()}时,返回的关键字列表将保留在变更集错误中,类似于cha
我试图简单地使用Elixir将理解的结果打印到控制台。下面是我试图打印的问题和代码:
range = 1..999
multiple_of_3? = fn(n) -> rem(n, 3) == 0 end
multiple_of_5? = fn(n) -> rem(n, 5) == 0 end
import Integer
IO.puts for n <- range, multiple_of_3?.(n), multiple_of_5?.(n), do: n
很简单。唯一
我需要做一些计算,但是我遇到了一个非常低的值的问题,例如,我需要得到0.005的2.7%,最终得到1.350000000000003e-4,这不是我想要的,我只需要知道如何才能得到这些值的准确百分比,我现在正在做的是*2.7/100,它对整数或大于0.05的浮点值非常有效
例如,我需要的是0.005的2.7%,需要显示为0.000135。首先,要理解语言并没有被破坏,只是被破坏了
因此,从某种意义上说,1.350000000000003e-4是准确的,但您这里的问题是Elixir以指数表示法打印
考虑下面的例子
iex(2)> defmodule User do
...(2)> defstruct name: "tester"
...(2)> end
{:module, User,
<<70, 79, 82, 49, 0, 0, 8, 32, 66, 69, 65, 77, 65, 116, 85, 56, 0, 0, 0, 232,
0, 0, 0, 22, 11, 69, 108, 105, 120, 105, 114, 46, 85, 11
我不理解这个错误,我搜索了很多。没有一个示例显示多个关联?
这是密码
我的访问列表:
defmodule Db.AccessList do
use Ecto.Schema
schema "access_lists" do
belongs_to :user_id, Db.User
belongs_to :role_id, Db.Role
belongs_to :asset_id, Db.Asset
belongs_t
我可以在Erlang中执行此操作:
io:fwrite("~.16X~n", [-31,"0x"]).
-0x1F
ok
但不是长生不老药:
:io.fwrite(“.16X~n,[-31,0x]”)
**(ArgumentError)参数错误
(stdlib):io.format(#PID,“.16X~n”,[-31,“.0x]”)
为什么不呢?添加@Dogbert的评论作为答案:
尝试使用单引号:
:io.fwrite('~.16X~n', [-31, '0x'])
另一个解释:Eli
我在这里读到:
ConsumerSupervisor的所有实现仅为每个工作单元启动一个子模块(上面链接中的打印机模块)。如果孩子死了,有没有办法重新启动
对我来说,如果孩子没有正常关机,那么名为“ConsumerSupervisor”的它将能够重新启动孩子。以前有人这样做过吗
在我的实现中,我让consumersupervisor启动一个实际上是GenServer的孩子来执行工作,然后关闭它自己。如果它异常崩溃,我希望它重新启动
思想。。
我曾考虑过实现一个消费者,它向dynamicsuperv
我知道这个问题已经被问过了,答案总是个人的
然而,我看到了Mix.extosql.confure\u开始时提到了很多,似乎这是一种公认的方法
但是,在exto_sql 3.1.2中,此功能已被完全删除(请参阅)。我不清楚为什么它被移除了
因此,总结一下这个问题:是否有一种可以接受的方法来启动ecto、repo并确保日志后端在不编写太多自定义代码的情况下按预期工作?目前可以接受的方法是
Mix.Task.run("app.start")
Mix.extosql。确保\u启动的是一个私有函数,不能
我有一个基本的应用程序,并试图在我的控制器上使用插头。
如果请求主体没有“url”参数,它基本上应该返回400。
当我从邮递员那里发送请求时,它工作正常,但在我的测试中似乎不起作用
我必须做些什么才能让它在测试环境中工作吗
plug :check_url_existence when action in [:create]
def create(conn, link_params) do
with {:ok, %Link{} = link} <- Links.create
我有两个用户,买家和管理员在我的应用程序中,他们都有不同的登录详细信息,管理员用电子邮件和密码登录,买家用他们的电话号码和我们发送给他们的代码登录。所以,我做了两个认证插头。下面是我如何将这些插件添加到浏览器管道中的:
pipeline :browser do
plug :accepts, ["html"]
plug :fetch_session
plug :fetch_flash
plug Phoenix.LiveView.Flash
plug :protect_from_
我正在通过mix-release创建伞形应用程序的发行版。然而,即使我可以手动运行该应用程序,我在启动它时也会出现一些错误
mix-release
我正在尝试运行具有混合版本的应用程序。此命令工作正常,它在\u build/prod/rel/my\u app/bin/my\u app中创建可执行文件。我可以用命令start运行这个可执行文件,一切都运行得很好
但是,如果我没有使用start而是使用start\u iex我首先得到一个错误,然后应用程序正常运行:
$ _build/prod/rel
来自Python背景,我非常怀念Python的dir(),它列出了对象或库中的所有方法
Elixir中是否有等效项?如果您在终端上,可以键入:ModuleName.,然后按tab键,它将显示该特定模块中的所有可用函数/宏。不过,图书馆并没有什么明智的做法
我试图为我的函数编写一个不接受字符列表的保护表达式,因此我这样做:
def myfunction(path)何时是_list(path)do
这里的问题是,is\u list在给定诸如“path”之类的字符列表时也会返回true,我该怎么做?您可以尝试is\u binary。对于字符串,将返回true,对于列表,将以您定义的方式返回false。几乎iex(7)>是列表(“hello”)而不是二进制(“hello”)真iex(8)>是列表(“hello”)而不是二进制(“hello”)假iex(
将两项元组列表(如[{1,2},{3,4}]转换为map%{1=>2,3=>4})的优雅方式是什么
关键字列表很简单,但如果我们有任意键呢?我刚刚得到它:
list = [{1,2},{3,4}]
themap = for e <- list, into: %{}, do: e
list=[{1,2},{3,4}]
themap=对于e来说,最简单的方法是:
Enum.into(list, %{})
Map模块还支持将此类列表作为新功能的参数:
iex>Map.new([{1,2},{
我目前正在尝试创建一个atom,用于连接到Redis的数据库。通常我会使用GenServer的start中的name选项,但该选项不可用。在Getting Started(Elixir 1.0.5)中,该示例似乎显示了Process.register(pid,:kv)作为一个选项。也许有更好的方法让这个过程变得可访问
下面显示了它如何与连接客户端查询中的保护不匹配
iex(2)> redis_client = Exredis.start
#PID<0.367.0>
iex(3)
我发现编译时警告非常有用,但有时我可能会错过它们,特别是在测试在CI服务器上运行的pull请求上
理想情况下,我会在projectmix文件中指定一些东西,使编译器更加严格
我希望这对所有混合任务都有效,并且我不希望必须将标志传递给命令,因为这很容易忘记
例如,对于带有编译器警告的项目,此命令应失败
mix clean && mix compile
这个也应该如此
mix clean && mix test
在某种程度上是可能的。在elixirc命令中有一个标
标签: Elixir
phoenix-frameworkecto
我想预先填充phoenix项目的数据库。
当应用程序第一次启动时,它应该使用初始数据(如管理员帐户的凭据)将一些数据插入数据库
做这件事的最佳方法是什么?我刚想到使用自定义混合任务。你怎么认为?这是个好主意吗?这是一个相当广泛的问题——定义“最佳”。什么方式最好?投票结束。好吧,也许“最好”在这里不是一个很好的术语。但我不认为用“最好”这个词来结束这个问题。我肯定有人想做类似的事情,目前还没有这样的问题。我想你可以通过混合运行priv/repo/seeds.exs来做到这一点。但我不知道如何在应
标签: Elixir
phoenix-frameworkecto
我在Phoenix应用程序中的用户模型上有一个布尔属性
如何从终端/命令提示符更新此属性
例如,在Rails控制台中(在我的终端中运行Rails c),我可以执行以下操作:
u = User.find(1)
u.admin = true
u.save
在凤凰城最好的方式是什么?(通过iex-S mix也许?-我认为这是最接近rails c)的方法。你是正确的iex-S mix将打开一个控制台
您必须使用一个exto.Changeset结构来进行更改。是进行任意更改的最简单方法:
alias
几天前,我看到了JoséValim的一篇帖子,并决定将这些模式实施到我自己的项目中
这些是我的config/*.exs。
如您所见(在test.exs和prod.exs中),我定义了两个env变量“http_client”和“user_agent”。这样,当我测试模块时,我使用一个模拟,当模块投入生产时,我使用一个真正的http客户机
问题是:当我尝试在phoenix应用程序中使用wikix作为依赖项时,出于某种原因,mix忽略了我的wikix/config/prod.exs文件,因此从未定义h
标签: Elixir
phoenix-frameworkmnesia
如何为phoenix中的测试设置孤立健忘症测试数据库。目前,我在安装挂钩和测试结束时插入了delete。但这肯定不是正确的做法
标签: Elixir
phoenix-frameworkecto
我不熟悉长生不老药和凤凰框架。如何将参数动态添加到EXTO查询?例如:
def index(conn, _params) do
departments = Repo.all(Department)
render(conn, "index.json", data: departments)
end
是否可以在EXTO查询中使用_参数?比如:
Repo.get_by(Department, _params)
当然,您可以动态地获取内容,在第二个参数中,需要Keyword.t | Map.
我有一个普通的exto.Model,我需要将它的字段注册为翻译,以便将它们移动到.pot文件中。我该怎么做
更新
我使用这些字段名准备翻译错误列表:
errors = changeset
|> Ecto.Changeset.traverse_errors(fn {msg, opts} ->
Enum.reduce(opts, msg, fn {key, value}, _ ->
String.replace(msg, "%{#{key}}", to_st
假设我有一个名为%Product{}的结构。我想将产品列表传递给方法:
def serialize(products) do
是否有任何方法可用于此列表的模式匹配或保护子句,以确保此列表仅由%Product{}结构组成?否,这在模式匹配或保护子句中都是不可能的。您必须在函数体中使用类似于Enum.all/2的内容来检查此问题。有点有趣-为什么不可能?您无法对整个列表进行模式匹配,因为这样做效率不高。清单的长度没有限制,甚至要求提供清单的长度都是低效的。模式和保护有一个隐含的要求,即它们是有效的
我有一个字符串,非空格字符之间有2,3个或更多空格
string = "a b c d"
我该怎么做才能做到这一点:
output_string == "a b c d"
最简单的方法是使用正则表达式:
iex(1)> string = "a b c d"
"a b c d"
iex(2)> String.replace(string, ~r/ +/, " ") # replace only consecutive space characters
"a b c
我有一个外部模式,其中包括字段:owned\u by\u id,:string。我将字段声明为字符串,因为我需要支持像“abc123”这样的值以及像“123”这样的值
他们说:
第二个参数是参数的映射,这些参数根据数据中的类型信息进行转换
在我的模块中,我定义了changeset如下:
def changeset(struct, params \\ %{}) do
cast(struct, params, [:owned_by_id])
end
当我这样做时:
MyModule.chang
标签: Elixir
phoenix-frameworkecto
我试图将自动插入的时间戳字段作为json提供服务
问题是Chrome和Firefox在解析发送内容的方式上存在分歧。问题似乎在于,默认情况下,Phoenix提供的服务类似于“2017-01-12T19:49:000”。Firefox和IE会将其解析为UTC,而Chrome会将其转换为本地时间。添加一个Z(“2017-01-12T19:49:000Z”)并给出当地时间
因此,我将代码转换为:
def render("message.json", %{message: message}) do
标签: Elixir
phoenix-frameworkecto
错误22001(字符串\u数据\u右\u截断):值对于类型太长
字符变化(255)
我理解(并假设)字符串将被限制为一定数量的字符;但是,我不确定哪种类型最适合这种情况
在Phoenix框架中,博客的“内容”部分应该使用什么类型
数据将是文本段落,不能限制大小
提前感谢。您得到的错误来自底层数据库,其中列类型设置为varchar,这是在迁移中将列类型指定为string时默认创建的
要存储超过255个字符的可变长度字符串,需要在迁移中将列类型指定为text。您可以使用迁移将现有列的类型转换为文本,
我正在尝试在Phoenix(Elixir)控制器中进行简单的令牌身份验证。正确令牌的值存储在config/dev.secrets.exs
到目前为止,我已经做到了:
发布https:www.myapp.com/notification?token=123
defmodule Myapp.NotificationController do
use Myapp.Web, :controller
def create(conn, params) do
etoken = endpoin
标签: Elixir
phoenix-frameworkueberauth
我正在尝试登录GitHub库。在登录函数中,我得到一个错误
“函数:unicode\u util.lowercase/1未定义(模块:unicode\u util
不可用)
我使用的代码
defmodule Discuss.AuthController do
use Discuss.Web, :controller
plug Ueberauth
def callback(conn, params) do
IO.inspect "++++++++++"
IO.insp
给定一个结构列表,有没有一种方法可以根据预先确定的指标(比如游戏难度)改变概率属性?此概率属性是随机选择房间的概率
我当前的概率属性已经设置好,需要不断更新。现在我想引入一个外部设置来调整这些值,我需要完全重新设计这个概率的设置方式。有关我的当前设置,请参见以下内容:
defmodule Sandbox do
defstruct description: nil, chance: nil
def all, do: [
%Sandbox{
description: "
我有一个ElixirAPI,可以使用Graphiql向我的数据库发送查询,正如您所看到的,所有crud调用都工作正常
field :users, list_of(:user) do
resolve &Graphical.UserResolver.all/2
end
这将返回数据库中的所有用户。显然,如果您使用的是前端,您不想手动键入查询,那么这并不理想。如何实现在模式文件中调用这些字段的函数?我如何写和说这个问题
users{
id,
name,
e
我在elixir interactive shell上尝试了上述代码,但得到了意外的输出。我假设第二段代码有问题,敬请告知。在Elixir中,您应该记住有关代码点和内核工作方式的信息
当您检查代码时:
iex(5)> Enum.map([{1, 2}, {3, 4}], fn({x, _y}) -> x end)
[1, 3]
iex(6)> Enum.map([{40, 6}, {50, 12}], fn({x, _y}) -> x end)
'(2'
iex
因此,我可以使用guard子句根据参数的类型运行不同版本的函数:
iex(2)> defmodule Test do
...(2)>
...(2)> def double(x) when is_integer(x) do
...(2)> x * 2
...(2)> end
...(2)>
...(2)> def double(x) when is_binary(x) do
...(2)> String.to_inte
标签: Elixir
phoenix-frameworkecto
有没有办法通过变更集仅更改关系中的第一项?如果我有:
1帐户与N电子邮件
是否可以执行以下操作:
schema "accounts" do
...
has_many(:emails, StockrtApi.Accounts.Email)
end
def changeset(account, params) do
account
...
|> cast_assoc(:emails, required: true, with: &Emai
我试图得到一个字符串来计算一个变量。可以对函数执行此操作,但无法使变量正常工作
old_var = "nooook"
Atom.to_string(:old) <> "_var" |> Code.eval_string
预期:
努ook
实际:
警告:变量old_var不存在,正在扩展为old_var,请使用括号消除歧义或更改变量名称
编号:1
这对局部变量不起作用,因为它们是如何管理的。显式接受绑定作为第二个参数,因此您可以:
Code.eval_string(Atom.
标签: Elixir
phoenix-frameworkecto
模式是这样的
用户模式
方法模式
这两个模式用户和方法的关联
这些是我的迁移
schema "users_methods" do
belongs_to(:users, Bookie.User.Model, type: :binary_id)
belongs_to(:methods, Bookie.Method.Model, type: :binary_id)
end
这是我的基本设置。现在,当我尝试在查询/插入用户后预加载方法时,它会给我错误信息
create t
我正在尝试创建一个函数来执行一些动态查询。有一种情况下,我希望添加与另一个表的联接,但只有在opts
def list_fields(opts) do
query =
from f in Field,
select: %{
id: f.id,
type: f.type,
value: f.value
}
with query <- by_type(opts[:type], query),
只是好奇为什么我不能在for循环中使用“in”Elixir操作符。例如:
#does not work
list = [1, 2, 3]
for i in list do
IO.puts i
end
而不是这个
#this works
list = [1, 2, 3]
for i <- list do
IO.puts i
end
因为中的运算符具有不同的语义用于检查值是否在范围/列表中。它类似于Enum.member?/2。另一方面,因为操作符中的具有不同的语义用于检查
我在用长生不老药
我收到一些属性,并使用它们创建一个位置。属性类似于:
attrs=%{纬度:123.2,经度:123.4,元数据:%{时间戳:“2015-05-05T01:31:54”,准确度:1}
要创建,我使用:
location
|> cast(attrs, [:latitude, :longitude, :metadata])
|> validate_required([:latitude, :longitude])
是否有一种方法可以验证metadata.timesta
我需要检查应用程序测试套件中的所有文件是否可编译
我试图创建一个所有文件的列表,然后编译它们,但结果证明,如果不启动ExUnit,我就无法做到这一点
find apps/*/test -name "*.exs" | xargs elixirc
== Compilation error in file apps/api/test/api/request_validators/validator_test.exs ==
** (RuntimeError) cannot use ExUnit.Cas
标签: Elixir
phoenix-frameworkphoenix
作为我长生不老药/凤凰学习曲线的一部分,我正在开发一个简单的在线商店。目前我面临的错误是:JordanivaWeb.ProductController.create/2中没有匹配的函数子句。我正在尝试使用Arc一次性上传几个文件,当我提交表单时,我遇到了这个错误。对于如何解决这个问题,如有任何帮助或建议,我将不胜感激
产品架构:
schema "products" do
field :colour, :string
field :description
我已经缩小了错误范围(至少我认为是这样),但仍然不知道为什么会发生这种情况。对于数据集:
mask = 1XX010X01110X110100000X11101X10X0X11
mem[3513] = 1787222
mem[11652] = 13761
mem[25508] = 235920
mem[49386] = 7440645
mem[51287] = 197564380
mem[9697] = 1812
mem[62638] = 5207143
在应用掩码后,我得到一个由第四个内存项
我正在寻找如何在html show中获得我的EXTO成员的自定义索引-从资源mix phx.gen.html生成。目标是每个新的post都应该有编号。我曾尝试在PostsController中创建该函数,但我无法解决它
<%= for post <- @posts do %>
<%= post.title %>
<% end %>
大家好,欢迎来到堆栈溢出:)
我很确定您正在寻找:
<%= @posts |> Enum.with_ind
上一页 1 2 ...
79 80 81 82 83 84 85 ...
下一页 最后一页 共 125 页