标签: elixir

Elixir:使用模式匹配捕获地图的其余部分

我想同时匹配地图中的特定键,捕获该地图的其余部分.我希望这样的东西能起作用:

iex(10)> %{"nodeType" => type | rest} = %{"nodeType" => "conditional", "foo" => "bar"}

** (CompileError) iex:10: cannot invoke remote function IEx.Helpers.|/2 inside match
Run Code Online (Sandbox Code Playgroud)

目标是编写一组函数,这些函数在地图的某个字段上进行地图,模式匹配,并对地图的其余部分执行一些转换.

def handle_condition(%{"nodeType" => "condition" | rest}) do
  # do something with rest
done
def handle_expression(%{"nodeType" => "expression" | rest}) do
  # do something with rest
done
Run Code Online (Sandbox Code Playgroud)

但看起来我需要被调用者单独传递nodeType,除非我遗漏了什么.

elixir pattern-matching

15
推荐指数
2
解决办法
2397
查看次数

整数范围的大小写匹配

有没有办法在整数范围内匹配?我想在一定数量的字符后删除字符,并添加省略号.这是我想要做的,但不匹配1..32.

def cutoff(title) do
    case byte_size(title) do
      _ -> title
      1..32 -> String.slice(title, 1..32) <> " ..."
    end
end
Run Code Online (Sandbox Code Playgroud)

elixir

15
推荐指数
1
解决办法
4215
查看次数

如果当前页面在Phoenix中,则在元素上应用CSS类

我目前正在寻找在页面处于活动状态时添加CSS类.凤凰目前最好的办法是什么?这个案子有帮助吗?

def active(option, conn) do
  if option == conn.request_path do
    " class=\"active\""
  else
    ""
  end
end
Run Code Online (Sandbox Code Playgroud)

在模板中:

<%= "contact" |> active(@conn) |> raw %>
Run Code Online (Sandbox Code Playgroud)

elixir phoenix-framework

15
推荐指数
2
解决办法
3695
查看次数

当我在会话中测试需要user_id的phoenix动作时,如何在设置中设置会话?

我有一个测试需要在测试之前将user_id设置为session,因为此操作需要知道current_user.

setup do
  %User{
    id: 123456,
    username: "lcp",
    email: "abc@gmail.com",
    password: Comeonin.Bcrypt.hashpwsalt("password")
  } |> Repo.insert

  {:ok, user: Repo.get(User, 123456) }
end

test "POST /posts", context do
  # conn = conn()
  #      |> put_session(:user_id, context[:user].id)
  #      |> post("/posts", %{ post: %{ title: "title", body: "body" } })

  # assert get_flash(conn, :info) == "Post created successfully."

  # updated to => 
  conn = conn()
        |> Map.put(:secret_key_base, String.duplicate("abcdefgh", 8))
        |> Plug.Session.call(@session)
        |> Plug.Conn.fetch_session
        |> put_session(:user_id, context[:user].id)
        |> post("/posts", %{ post: %{ title: "title", body: …
Run Code Online (Sandbox Code Playgroud)

testing session elixir phoenix-framework

15
推荐指数
1
解决办法
6904
查看次数

"!","?","_"和"."的含义是什么?elixir中的语法

我需要关于灵药理解下面的语法帮助!,?,_,和..elixir函数中的语法角色是什么?例如Repo.get!.

我不确定它们只是函数名称,还是有角色.虽然我知道.是为了调用匿名函数.而_对于任何一个或可变参数?

elixir elixir-framework

15
推荐指数
2
解决办法
2564
查看次数

在Phoenix应用程序脚本中查找文件(Rails.root)

Rails.root凤凰城有类似的东西吗?假设我想在Phoenix应用程序中使用配置文件.查找脚本中使用的文件和路径的约定是什么?

elixir phoenix-framework

15
推荐指数
1
解决办法
2223
查看次数

在应用程序启动时运行代码Phoenix Framework(Elixir)

如果您的应用程序/ api在vanilla Phoenix应用程序中启动,您是否会将要运行的代码放入?假设我想确保创建一些mnesia表或配置我的记录器后端.另一件事是运行时配置.他们在文档中提到它,但我不清楚在哪里定义/更改运行时配置.

Endpoint.ex 看起来像是一个完成初始配置的地方,但通过查看文档,我找不到任何允许我在启动时只运行一次代码的回调.

elixir phoenix-framework

15
推荐指数
1
解决办法
2837
查看次数

15
推荐指数
1
解决办法
3136
查看次数

如何在elixir中获取结构名称?

假设我有一个结构,struct = %MyApp.MyModel{ filled_with_data: "true }.

我如何获得结构名称(MyApp.MyModel在我的情况下)?

elixir

15
推荐指数
2
解决办法
3294
查看次数

我怎样才能在Absinthe中使用时间戳?(凤凰1.3)

我有凤凰1.3 +苦艾酒的问题.

我试试这段代码:

schema "urls" do
  field :path, :string

  timestamps()
 end

object :url do
  field :id, :id
  field :path, :string
  field :inserted_at, :datetime
end
Run Code Online (Sandbox Code Playgroud)

它可以使用id,path但它失败inserted_at了:

Inserted_at :datetime is not defined in your schema.          

Types must exist if referenced.   


lib/absinthe/schema.ex:230: Absinthe.Schema.__after_compile__/2     
(stdlib) erl_eval.erl:670: :erl_eval.do_apply/6                     
(elixir) lib/kernel/parallel_compiler.ex:121: anonymous fn/4 in Kernel.ParallelCompiler.spawn_compilers/1
Run Code Online (Sandbox Code Playgroud)

elixir phoenix-framework absinthe

15
推荐指数
1
解决办法
1474
查看次数