我已经使用Laravel PHP Framework进行Web开发,现在我想了解elixir并将其用作REST API服务.
我的问题是:elixir phoenix和laravel elixir有什么区别?
我的前端是一个单独的Brunch.io AngularJS应用程序.由于我的前端在http:// localhost:3333上运行,而我的凤凰后端在http:// localhost:4000上运行,因此在尝试POST到http:// localhost:4000/api/users/register时出现此错误
No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:3333' is therefore not allowed access. The response had HTTP status code 404.
Run Code Online (Sandbox Code Playgroud)
所以我认为这是一个CORS问题.如何在凤凰中发送标题?
这是我的router.ex
scope "/api", MyApp do
pipe_through :api
# Users
post "/users/register", UserController, :register
end
Run Code Online (Sandbox Code Playgroud)
这是我的UserController
defmodule MyApp.UserController do
use MyApp.Web, :controller
def register(conn, params) do
IO.puts(inspect(params))
conn
|> put_status(201)
|> json %{ok: true, data: params}
end
end
Run Code Online (Sandbox Code Playgroud) 对不起,我是Elixir的新手.在构建凤凰应用程序时,mix deps.get失败并出现错误.
% mix deps.get
Could not find Hex, which is needed to build dependency :phoenix
Shall I install Hex? [Yn] y
** (MatchError) no match of right hand side value: {:error, {:ssl, {'no such file or directory', 'ssl.app'}}}
(mix) lib/mix/utils.ex:409: Mix.Utils.read_httpc/1
(mix) lib/mix/utils.ex:354: Mix.Utils.read_path/2
(mix) lib/mix/local.ex:107: Mix.Local.read_path!/2
(mix) lib/mix/local.ex:86: Mix.Local.find_matching_versions_from_signed_csv!/2
(mix) lib/mix/tasks/local.hex.ex:23: Mix.Tasks.Local.Hex.run/1
(mix) lib/mix/dep/loader.ex:140: Mix.Dep.Loader.with_scm_and_app/4
(mix) lib/mix/dep/loader.ex:98: Mix.Dep.Loader.to_dep/3
(elixir) lib/enum.ex:1043: anonymous fn/3 in Enum.map/2
%
Run Code Online (Sandbox Code Playgroud)
erlang和elixir已通过kerl和asdf安装.我的安装日志在这里http://otiai10.hatenablog.com/entry/2016/02/03/154953
envirionment
发生了什么,我该怎么办?
我想知道如何从给定的字符串中删除逗号.我的尝试是:
st = "1,2,3"
String.strip(st, ?,)
#=> "1,2,3"
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
你如何检查Phoenix/Elixir/Erlang应用程序的正常运行时间?如果执行:observer.start()并查看"系统"选项卡,则可以在"统计"区域中查看正常运行时间.但我希望能够以编程方式提取该信息并将其包含在报告中.我已经找到了从哪里获取大部分数据,但我没有看到它从哪里获取正常运行时间.
我想在Ecto.Changeset上设置一个非特定于字段的错误.
在我的情况下,我有一个登录表单,我想设置一个错误,说电子邮件或密码无效.但是我还是想在它们为空时突出显示email或password字段.
在Rails中,您可以通过添加条目来实现errors[:base].在Ecto中有等价物吗?
我有一个特定的控制器动作,我想要渲染没有任何布局.
我尝试在控制器级别没有插件的情况下渲染,但它没有用.
defmodule Hello.PageController do
use Hello.Web, :controller
plug :put_layout, nil
def landing(conn, _params) do
render conn, "landing.html"
end
end
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
当我输入iex -S mixPowerShell时,我收到此错误:
Invoke-Expression : A positional parameter cannot be found that accepts argument 'mix'.
At line:1 char:1
+ iex S mix
+ ~~~~~~~~~
+ CategoryInfo : InvalidArgument: (:) [Invoke-Expression], ParameterBindingException
+ FullyQualifiedErrorId : PositionalParameterNotFound,Microsoft.PowerShell.Commands.InvokeExpressionCommand
Run Code Online (Sandbox Code Playgroud)
在'iex'命令之后编写'-S mix'以获得在cmd中输入相同效果的正确方法是什么?我不相信PowerShell语法,这是一个问题.
我想要一个Elixir函数来生成一个n参数出现列表,类似于Haskell的replicate函数:
Input: replicate 3 5
Output: [5,5,5]
Input: replicate 5 "aa"
Output: ["aa","aa","aa","aa","aa"]
Input: replicate 5 'a'
Output: "aaaaa"
Run Code Online (Sandbox Code Playgroud)
我已经创建了一个"复制"整数n时间的函数:
import String
def replicate(number, n)
String.duplicate(to_string(number), n)
|> split("", trim: true)
|> Enum.map(fn n -> String.to_integer(n) end
end
Run Code Online (Sandbox Code Playgroud)
但这与规格不符:(.你能帮帮我吗?
我有一个Elixir/Mix应用程序(也有凤凰城,但也有很多非凤凰城的东西),我想知道什么是最好的做法,用于放入"启动"代码,例如动态地将孩子添加到主管,解雇关闭"我还活着!" ping或其他你希望在启动后立即发生的事情.
一个显而易见的地方是Application文件,但预期的返回是从中返回的Supervisor.start_link(children, opts).所以,例如,在Phoenix应用程序中,我可以这样做:
defmodule MyApp do
use Application
def start(_type, _args) do
import Supervisor.Spec
children = [
supervisor(MyApp.Repo, []),
supervisor(MyApp.Endpoint, []),
supervisor(MyApp.DynamicSupervisorThingy, [])
]
opts = [strategy: :one_for_one, name: MyApp.Supervisor]
start_val = Supervisor.start_link(children, opts)
# --- Put things right here that I want to start ----
MyApp.DynamicSupervisorThingy.add_children_dynamically()
MyApp.SomeModule.do_some_thingy()
MyApp.OtherModule.send_some_pings()
if MIX_ENV == :prod do
MyApp.YetAnother.prod_stuff_i_dont_want_in_dev()
end
start_val
end
end
Run Code Online (Sandbox Code Playgroud)
这似乎是错的,但我无法弄清楚我应该把这段代码放在哪里.
elixir ×10
erlang ×2
action ×1
angularjs ×1
controller ×1
cors ×1
ecto ×1
elixir-mix ×1
haskell ×1
laravel ×1
layout ×1
list ×1
powershell ×1