Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Elixir 如何连接两个名称以创建一个函数名_Elixir_Phoenix Framework - Fatal编程技术网

Elixir 如何连接两个名称以创建一个函数名

Elixir 如何连接两个名称以创建一个函数名,elixir,phoenix-framework,Elixir,Phoenix Framework,在我的模板中,我尝试动态定义其中的路径帮助器: <%= link "Edit", to: @options[:resource]_path(@options[:conn], :edit, @options[:resource]) %> 因此,我想使用@options[:resource]预先添加资源名称并创建正确的路径帮助器,如:post\u path(@conn,:edit,post) 因为这是一个函数名而不是字符串,所以我尝试过的所有方法({},++)都不起作用。因为您想动

在我的模板中,我尝试动态定义其中的路径帮助器:

<%= link "Edit", to: @options[:resource]_path(@options[:conn], :edit, @options[:resource]) %>

因此,我想使用
@options[:resource]
预先添加资源名称并创建正确的路径帮助器,如:
post\u path(@conn,:edit,post)


因为这是一个函数名而不是字符串,所以我尝试过的所有方法(
{},++
)都不起作用。

因为您想动态调用函数,这里应该有帮助:

<%= link "Edit", to: apply(
       __MODULE__,
       :"#{@options[:resource]}_path",
       [@options[:conn], :edit, @options[:resource]]
    ) %>


选项[:resource]的值是多少?它是字符串、原子还是结构?嗯……我只是传递
post
,而不是字符串、原子或结构……您可以为调用此模板的控制器操作添加代码吗?在您第一次评论之后,我才意识到,如果改为使用字符串,并在处理此模板的方式中更改一些逻辑,会容易得多。谢谢。
apply/2
仅适用于匿名函数。另外,我不认为
@options[:resource]
是字符串或原子,或者
apply/3
可以使用
MyApp.Router
作为第一个参数。事实上,谢谢,这里已经提到了
apply/3
。OP表示,预期结果是“类似于
post_path(…
”,这就是为什么我希望那里有一个字符串/原子。在任何情况下,这个字符串/原子都应该可以从
@options[:resource]
中轻松检索。