如果我想创建一个模块,其中的功能可以在每个模板中访问,并且可以使用视图的所有功能(创建标签、使用路由器路径等),那么实现这一点的最佳方法是什么
简单地说,如何创建全局视图?您可以定义一个模块(我将其放在helpers目录中),其中包含您的函数:
defmodule MyApp.SomeHelper do
def some_function do
#...
end
end
然后,您可以将其包含在MyApp.Web的视图功能下:
def view do
quote
我开始在中创建web应用程序。我已经看过了一些教程,并从中创建了聊天示例。当我们生成exto模型时,它们使用controller生成CRUD网页,这是为了简单的目的,而不是为了实时更新。我有点困惑什么时候使用控制器,什么时候使用频道,是不是只有在需要实时更新的时候
还有一种方法可以将这两种方法一起用于特定的表单/网页,其中某些任务在控制器上完成,某些任务在通道中完成。请澄清。频道用于实时通信。控制器用于正常的HTTP请求-响应通信
控制器通常基于数据库资源,因此通常会为您生成CRUD操作。但是实
我正试图思考如何使用Phoenix,使用不同的DB驱动程序,而不使用Ecto,因为我想连接到OrientDB。有一个名为MarcoPolo的二进制驱动程序,奇怪的是,我能够使用poolboy创建一个工作池来连接它,但不仅仅是一个简单的连接。我对长生不老药还是很陌生
这就是我所做的:
在mix.exs中定义依赖项
defp deps do
[{:phoenix, "~> 1.0.3"},
{:phoenix_html, "~> 2.1"},
{:phoe
标签: Elixir
phoenix-frameworkecto
在创建/插入时添加计算值的最佳做法是什么?我应该为创建和更新创建一个唯一的变更集吗
比如说,我有一个博客文章模型,我想创建一个title slug值并存储它。这有点做作,但出于某种原因,我只想将其设置为create而不是update。我应该做如下的事情吗
defmodule MyBlog.Post do
使用MyBlog.Web,:model
模式“posts”做什么
字段:标题,:字符串
字段:title\u slug,:字符串
字段:内容,:文本
时间戳
结束
@必填字段~w(
标题
内容
我想按顺序获取包含列和值的列表,并将其转换为struct。我目前正在对值进行模式匹配,但随着列表的不断增长,我的代码变得越来越大。这里有一些代码
@find_account_query ~s{
SELECT
username, -- 1
name, -- 2
surname, -- 3
account.active, -- 4
CASE WHEN person_id IS NOT NULL
THEN TRUE
ELSE FALSE
我正在玩并试图阅读路由器中一个简单post请求的正文:
形式
<form action="/create_item" method="post">
<input type="text" value="whatever" name="name">
<input type="number" value="99" name="age">
<input type="submit">
</form>
如果我提交表单,这将把name=
我正在编写一个Elixir应用程序,其中一些访问数据库的进程将为插入的记录生成唯一标识符
我正在使用,它将以以下方式生成id:
{:ok, pid} = Cuid.start_link
Cuid.generate(pid) # => ch72gsb320000udocl363eofy
下面是我的应用程序的设置方式
有一个phoenix控制器处理请求
此控制器调用当前同步的自定义Repo.insert命令
Repo.insert每次调用Cuid.start\u link和Cuid.ge
标签: Elixir
phoenix-frameworkchangeset
我正在尝试编辑表“users”中的locale\u id字段。
表“locales”只包含id、代码(如“en”或“ua”)、名称和默认时间戳
这是我的*.eex表格代码:
<%= form_for @changeset, user_path(@conn, :update, @current_user), [multipart: true], fn f -> %>
...
<div class="form-group">
<label>Langu
标签: Elixir
phoenix-frameworkecto
我最近开始将现有的PHP messenger应用程序移植到elixir(使用elixir 1.3、phoenix 1.2、Exto 2.0.1和mariaex 0.7.7)。该应用服务于数百万用户,因此性能非常重要。我对长生不老药很陌生,所以请原谅我这个问题的愚蠢
我有以下数据库架构:
每个线程都有多个线程参与者和消息。thread_参与者在链接线程的上下文中拥有关于用户的信息(例如,当用户最后一次看到此线程时)。线程由用户编写的多条消息组成
我希望json my API最终返回的是:
"da
标签: Elixir
phoenix-frameworkecto
所以我有一个遗留数据库模式,我正试图在Elixir(Phoenix)和Ecto的帮助下对其进行规范化。列定义工作正常,但它们是可怕的名称(技术债务万岁)
在通过生成的api显示和管理列名时,是否有办法将列名别名,即“meetingName”变为“meeting_name”?我已经看过了外星生物的文档,但似乎根本找不到它
例如
@primary_key {:meetingId, :integer, []}
@derive {Phoenix.Param, key: :meetingId}
schem
我正在与长生不老药列表、元组、关键字列表等斗争。这个列表有什么问题
这很有效
iex> [1, one: "one"] #=> [1, {:one, "one"}]
但事实并非如此
iex> [one: "one", 1] #=> Syntax error before 1
这就是长生不老药语法的用法:identifier:expr语法(大致对应于前面链接的解析器中的kw规则)仅在列表文字的末尾被接受。长生不老药语法的用法是:identifier:expr语法(大致对
我正在编写长生不老药书和练习。我有一个sum函数,我想返回列表中的sum值,而不仅仅是一个数字,但在算术表达式中得到的参数是错误的。需要一些指示吗
defmodule Mymod do
def sum([]), do: []
def sum([head | tail]) do
[head + sum(tail)]
end
end
问题是Mymod.sum/1返回一个列表,您试图将其添加到数字中
要使其正常工作,您应该将sum返回的列表“公开”到数字中,然后添加它:
def
我有一个具有的主管:简单的一对一重启策略,当我呼叫主管时,孩子们会发生什么情况。停止(sup)
从测试中我看到,无论他们在做什么,他们都在死亡。有没有标准的方法让他们优雅地关机,这样他们就可以完成工作(如果有的话)?类似于调用GenServer.stop在他们身上…伊万。我想你想把出口限制在你的工人身上。如果你不诱捕他们,他们就会被杀死。以下是我的意思的说明:
defmodule SupervisorStop do
use Application
def start(_type, _a
标签: Elixir
phoenix-frameworkecto
生成“datetime”类型的列时,我收到一条警告
但是,当我替换为“utc_datetime”类型时,我得到一个异常:
虽然像警告所说的那样,Ecto已经弃用了:datetime,但Phoenix发电机之前的最新版本Phoenix 1.2.1。因此,在Phoenix发布1.2.2或1.3.0之前,您必须在生成器中使用datetime,并手动更改生成的迁移和模式中的类型,或者直接使用git回购主分支未发布的Phoenix版本。大约什么时候发布?很遗憾,我找不到任何相关信息。从上次发布到现在已经有
标签: Elixir
phoenix-frameworkhttpoison
我们在使用hackney池时,在post和get请求的代码库中使用HTTPoison。在这里发帖只是因为我想从所有专家那里得到一些意见
我们使用了很多摄像机,从每台摄像机中,我们得到图像,然后所有这些图像,我们将它们保存到服务器上
我们在每秒范围内提出了近千个请求。在seaveedfs方面,我们启动了服务器,超时时间为10秒。在我们的代码库端,为了上传图像,我们使用这个hackney配置
:hackney_pool.child_spec(:seaweedfs_upload_pool, [ti
标签: Elixir
phoenix-frameworkecto
我在尝试运行mix EXTO.create时收到此错误:
13:27:47.442[错误]GenServer#PID终止
**(DBConnection.ConnectionError)tcp连接(本地主机:5432):连接被拒绝-:ECONREFUSSED
(db_connection)lib/db_connection/connection.ex:148:DBConnection.connection.connect/2
(connection)lib/connection.ex:622:c
我有一个函数,它的Enum.reduce尝试更新映射。现在我不确定您是否可以这样做,但是当行IO.put(“TEST”)打开时,代码在打印TEST后的下一次迭代中失败。如果我删除那一行,代码就可以工作了
def to_table({team, matches}, table) do
Enum.reduce matches, table, fn({vteam, result}, table) ->
%{f: lo, a: vi} = result
con
标签: Elixir
phoenix-frameworkecto
我正在创建一个小网站,将图片上传到相册。对于这两个,我都有模型。为了便于阅读,我只需将应用程序命名为网站。我的问题是,我想在删除相册时(以及删除用户时)从硬盘中删除文件
当图片被直接删除时,我通过调用图片控制器中ImageUploader的delete函数来删除文件
defmodule Website.PictureController do
...
def delete(...) do
# get picture and check that current user is t
我试图创建一个迁移,通过对列中的每个项目调用函数date\u str\u to\u timestamp(在同一文件中定义),将列中的数据转换为不同的格式
from(p in "posts",
update: [set: [ timestamp: ^date_str_to_timestamp(p.time) ]])
|> Pesterbot.Repo.update_all([])
但我得到的是:
_build/dev/lib/pesterbot/priv/repo/migrat
标签: Elixir
phoenix-frameworkgen-server
我正在使用GenServer作为排队系统。如何使整个应用程序都可以访问相同的过程
我想把它放在application.ex中就可以了,就像这样:
children = [
supervisor(Prefect, [], name: PrefectQueue)
]
MyPerfect模块是GenServer:
defmodule Prefect do
use GenServer
alias Prefect.Document
# client
def start_link()
这是一个示例流程,将在三个特定的初始扑克选项中选择一个选项:
defmodule PokerTable do
# ...more stuff here - in particular, implementations
# ... of process* and has_bet functions, state initialization
# ... and more irrelevant stuff
defp ask_option_on_no_bet(currentTa
我试图在模块中动态调用私有方法
apply能够调用公共方法,但在尝试调用私有方法时,即使是在模块的上下文中,也会出现未定义的错误。有没有一种方法可以使方法私有但仍然动态调用
例子
结果
Kernel.apply(Test,:worldp,[])就像Test.worldp()一样
不能在模块外调用私有函数
您可以尝试以下方法:
defmodule Test do
def hello() do
IO.puts("hello")
Kernel.apply(&worldp/0
是模式表\u名称吗。。。结束函数,它是否也是字段:title,:string函数?或者这整件事叫什么
use MyApp, :model // import Ecto module to use its chema
// is schema is a custom type or sth or function, how to call it?
schema "documents" do
// and this line also
field :title, :string
ti
下面是我试图添加规范的代码
@spec failure(term) :: error(term)
@spec failure(reason) :: error(reason) when reason: term
defmacro failure(reason) do
quote do
{:error, unquote(reason)}
end
end
第一个等级库定义工作正常。
然而,我想让它更清楚,如果原因是一个整数,那么返回的错误也将包含一个整数。
第二个规范不起作用。错误
假设我使用Timex,如下所示:
use Timex
Interval.new(from: ~D[2016-03-03], until: [days: 3])
%Elixir.Timex.Interval{from: ~N[2016-03-03 00:00:00], left_open: false, right_open: true, step: [days: 1], until: ~N[2016-03-06 00:00:00]}
我想生成一个日期列表,间隔一天。如何从这一点进入列表?为什么
标签: Elixir
phoenix-frameworkplug
我正在使用PolicyWonk进行授权,我创建了此策略:
def policy(
%{current_user: current_user, organisation: organisation} = _assigns,
:organisation_view
)
when not is_nil(current_user) and not is_nil(organisation) do
case current_user.organisation_id == org
我有一个函数,它看起来像:
def func()do
列表_z=[123]
...
我想把下一个数据添加到这个列表中,比如list_z=[123,“abc”,190]
我尝试使用列表。在处插入_,附加运算符,如,++,Enum.join。。。但所有这些都只是对该实例的附加,下一次迭代的变量返回到list_z=[123]。我知道它是不可变的,但是我们还有其他方法可以尝试类似的东西吗
编辑2:
我所做的
def append_l(a,b)do
a=[b | a]
反向枚举(a)
A.
结束
def
我想删除所有标准样式,然后添加我自己的样式。我删除了文件夹assets/css中的所有文件,然后重新启动服务器-以前的样式仍然保留。然后,我还从priv/static/css文件夹中删除了这些样式,然后重新启动了服务器——以前的样式仍然存在。请告诉我,我做错了什么,以及如何正确添加/删除CSS?我通过将必要的CSS导入到assets/js/app.js解决了这个问题
import "../css/test.css"
我不知道这个解决方案有多正确,但它是有效的。这是正确的。当您刚刚删除文件时,您
有一个关于使用NodeJS(npm)安装模块的问题。例如,我使用npm安装particlesJS
npm i particlesjs
安装已成功完成
我在app.js文件中导入particlesJS
import particlesjs from "particlesjs"
但在控制台中,我看到一个错误
没有定义particlesJS
我仍然不擅长与npm和phoenix合作,我真的很想弄清楚如何正确连接模块
附言
为了使用jQuery,我将这些行添加到app.js中
import $ fro
我有以下字符串,它是来自WWW的值,通过http请求进行身份验证:
"Digest realm=\"Web Service Realm via Digest Authentication\", qop=\"auth\", nonce=\"MTU3MjchuUVEIHEUnVNV==\""
我需要将其转换为一个映射,以便可以轻松地引用realm和nonce的值。我有一些非常脆弱的工作代码,例如提取领域:
headers
|> String.split(",")
|&
例如:
defmodule Demo.Validators.AddressValidator do
@callback validation_level() :: String.t
@callback set_validation_level(String.t) :: :ok
@callback validate(String.t) :: boolean
def validation_level() do
Application.get_env(:demo, :vali
我正在学习Elixir编程,并且我正在学习记录括号语法
以下是示例:
defrecord FileInfo, atime: nil, accesses: 0
defmodule FileAccess do
def was_accessed?(FileInfo[accesses: 0]), do: false
def was_accessed?(FileInfo[]), do: true
end
P>作者认为,在编译时,ILIXIR将记录扩展为元组。所以
def
第一次尝试凤凰和长生不老药。在项目运行的最后阶段被卡住了
mix phoenix.server
有人有同样的问题吗?这是错误跟踪。(postgrex作为依赖项添加)
**(混合)无法启动应用程序日志:blog.start(:normal,[])返回错误:shutdown:无法启动子项:blog.Repo
**(退出)关机:无法启动子项:exto.Adapters.Postgres
**(退出)引发了一个异常:
**(RuntimeError)找不到exto.Adapters.Postgres.
我正在学习《编写Phoenix程序》一书中的Phoenix框架,遇到了一个我似乎无法理解的错误。基本上,这本书目前正在添加一个用于创建新用户的表单。因此,当我将浏览器指向http://localhost:4000/users/new我看到以下页面(请展开图像):
在命令行输出中,服务器显示:
[info] GET /users/new
[debug] Processing by Rumbl.UserController.new/2
Parameters: %{}
Pipelines:
我有一个主题模型,它形成了一个层次结构,带有一个父id键。我希望能够在不进行递归选择的情况下快速访问路径,因此有一个额外的层次结构字段使用Postgres ltrees
ltree部分工作正常,在数据库中看起来像这样:1.2.5,其中每个数字都是祖先主题的id
问题是如何加载一个主题,并预加载其祖先主题?
一条有希望的路线似乎是,但我无法让它发挥作用。在控制器中,我有:
query = from t in App.Topic,
where: fragment("hierarchy @>
我的elixir控制台配置存储在.iex.exs中:
if Code.ensure_loaded?(MyApp.Repo) do
alias MyApp.Repo
end
我希望能够同时运行iex和iex-S mix。如果我在iex上删除条件,则会出现异常
但是这种情况不太好用!即使在iex-S mix上我也有(模块Repo不可用)错误,如果我试图调用Repo.get(…)。因此,我的问题是:
为什么代码。确保\u已加载?在这里不起作用
我怎样才能解决这个问题
这是一个范围界定的问题。在块
我想发送一封来自混合任务的电子邮件。以下是任务的代码:
defmodule Mix.Tasks.sendmails.rementer do
使用Mix.Task
进口混合
导入外部查询
def运行(_参数)do
Foobar.welcome|u email |>MyApp.Mailer.deliver|u立即发送
结束
结束
德福巴多模块
进口竹子。电邮
欢迎你发电子邮件
新邮件
|>到(”foo@example.com")
|>从(”me@example.com")
|>主题(“欢迎!!!”)
标签: Elixir
phoenix-frameworkectotimex
我有以下模块:
defmodule SoundButtonsApi.Accounts.Session do
use Ecto.Schema
use Timex
import Ecto.Changeset
schema "accounts_sessions" do
field :expires_at, Timex.Ecto.DateTime, null: false
field :token, :string, null: false
field :use
我有一个关于Elixir的应用程序,它应该接收大量数据,然后将数据分发到n个部分
这些零件必须并行处理,但同时工作的员工数量应受到限制。作为处理的结果,员工返回一个大的值数组
主流程收到所有工作人员的结果后,将所有工作人员粘在一个文件中
让员工完成任务是个好主意吗?员工的流程必须返回大量数据这一事实是否会有问题
或者,最好使用GenServer创建一个员工池,并进行同步调用?提供了一个简单的API来分解工作,然后收集结果,同时限制并发性:
文档中的示例:
max_concurrency = Sy
在Ruby中,我可以:
User.find_by(email: "foobar@email.com").update(email: "hello@email.com")
我怎样才能在长生不老药中做类似的事情
Ecto.Changeset.change(MyApp.User |> where(email: "foobar"), email: "barbaz") |> MyApp.Repo.update
您可以在查询中使用set:,并使用Repo.update\u all/1运行它:
标签: Elixir
phoenix-frameworkecto
就嵌套资源而言,我可以在Phoenix中拥有这样的东西吗
resources "/landlords", LandlordController do
resources "/houses", HouseController do
resources "/units", UnitController
end
end
我有房东的地方有很多房子,房子也有很多单元。或者你知道如何做到这一点吗?是的,这是可能的,而且非常普遍。这是实现这一目标的最佳途径。请阅读a以获得更多信息,这里还有一
在Elixir中,我有一个嵌套贴图列表,每个都具有相同的基本结构-例如:
nested_map_list = [
%{foo: %{test: "Hi"}},
%{bar: %{test: "Hello"}},
%{baz: %{test: "Hey"}}
]
因此,它们在上层都有一个不同的键,但在嵌套贴图中有相同的键。有没有一种方法可以迭代这个列表,这样每次迭代都可以访问嵌套映射,而不管上面级别中的键是什么
为了说明我的意思,请考虑这个伪代码:
Enum.each(n
试图将自定义函数传递给以下函数,但我运气不好
defmodule M do
def custom_fn([head|tail],fnce) do
fnce.(head)
custom_fn(tail,fnce)
end
def custom_fn([]), do: nil
end
试着这样称呼它:
M.custom_fn([1,2,3], (fn(x) -> x * 10 end))
明白了吗
** (Fu
标签: Elixir
phoenix-frameworkecto
因此,我复制了一个查询,它将在其中预加载关联的用户
问题是它抛出了一个exto.query.cast错误,我似乎找不到解决方案
查询
def get_avatar!(id) do
IO.inspect(id)
query =
from(
p in AssocApp.Accounts.Avatar,
where: p.user_id == ^id,
select: p,
preload: [:user]
)
Repo.get!(Avatar, query
我很难理解以下代码片段:
Comeonin.Argon2.add_hash("hello123") |> Comeonin.Argon2.check_pass("hello123")
哪些产出:
{:ok,
%{
password: nil,
password_hash: "$argon2i$v=19$m=65536,t=6,p=1$thCv1TGdiLszGx+bRugcqQ$EH8PpUqpCGTevihslOdSRPWS6+UlQJwv2pMOvwBJUS4"
}}
在编写Phoenix应用程序时,我习惯于使用以下语法编写链接:将“我的个人资料”链接到:Routes.user\u url(@conn,:show,user)。最近,当与我一起工作时,我意识到您可以在这里传递MyAppWeb.Endpoint而不是@conn,并且它也可以工作。由于(我想象)大多数Phoenix应用程序只有一个端点模块,我有点希望它能推断出我的默认端点,这样我就不必每次调用path/url帮助器时都提供conn/Endpoint。这让我想知道为什么Phoenix设计这些助手总是需
我有这样一个简单的插件处理程序
post "/some/url" do
# do something
# render(something)
end
…但我想以某种方式重定向到另一个get处理程序,而不是呈现html
如何使用plug_cowboy 2.0实现这一点?没有魔法:您必须发送HTTP 302响应:
conn
|> put_resp_header("location", url)
|> send_resp(conn.status || 302, "text/h
我生成了一个新的mix项目,可以在/lib文件夹中看到.ex文件。当尝试使用“mix run”从项目根路径运行应用程序时,我收到一个错误,因为该文件位于/lib文件夹中。
为了克服这一问题,我在项目根目录中创建了一个新文件,使用start(_type,_args)方法,并尝试将该模块设置为mix.exs中的mod key,但它没有链接到指定的模块
是否有其他方法从项目根运行应用程序
def application do
[
extra_applications: [:logger],
我有一个Phoenix Web应用程序,它在开发模式下启动良好(ENV=dev mix phx.server)
但在生产模式中失败:
ENV=prod mix phx.server=>
[error]无法在:Ranch_tcp:listen([{:cacerts,:…},{:key,:…},{:cert,:…},:inet6,{:port,4000}])中启动Ranch listener HermesWeb.Endpoint.HTTP,原因是:eafnosupport(协议族不支持地址族)
端
我目前正努力满足这一要求。例如,我有一个函数列表
def function_a(a, b, c, d) do
...
function_b(a, b)
...
end
defp function_b(a, b) do
...
function_c(a, b)
...
end
defp function_c(a, b) do
...
function_d(a, b)
...
end
defp function_d(a, b) do
IO.inspect
上一页 1 2 ...
7 8 9 10 11 12 13 ...
下一页 最后一页 共 125 页