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
Serialization 单个视图中的多个属性_Serialization_Elixir_Phoenix Framework - Fatal编程技术网

Serialization 单个视图中的多个属性

Serialization 单个视图中的多个属性,serialization,elixir,phoenix-framework,Serialization,Elixir,Phoenix Framework,我希望有一个视图,但希望根据调用它的json api呈现不同的属性。例如:索引页面不需要所有属性,因此不需要为其调用所有属性,而显示页面需要所有属性,因此它应该获取所有属性 我基本上想要这样的东西: attributes [:id, :name, :email, :website, :inserted_at, :updated_at] 表演和 attributes [:id, :name, :email] 用于索引 我正在为此使用ja序列化程序,所以我只希望在这方面有一个解决方案 PS:我可

我希望有一个视图,但希望根据调用它的json api呈现不同的属性。例如:索引页面不需要所有属性,因此不需要为其调用所有属性,而显示页面需要所有属性,因此它应该获取所有属性

我基本上想要这样的东西:

attributes [:id, :name, :email, :website, :inserted_at, :updated_at]
表演和

attributes [:id, :name, :email]
用于索引

我正在为此使用ja序列化程序,所以我只希望在这方面有一个解决方案

PS:我可以有两个具有相应属性的不同视图,但这似乎是一个解决方案,也没有多大意义


提前谢谢。

如果您发布一些代码,将会有所帮助。但您可以在视图中执行此操作。可以为每个控制器操作定义单独的
渲染
函数头

例如:

  def render("index.json", %{store: store}) do
    %{data: %{store: %{id: store.sap_id, name: store.name}}}
  end

  def render("show.json", %{store: store}) do
    %{data: %{store: %{id: store.sap_id, name: store.name, other: store.other}}}
  end

上面,每个操作都有一个渲染函数头:
索引
显示
。然后,函数体构建正确的JSON响应。您可以使用此方法自定义要返回的属性。

在render方法调用中有一个可选参数。我们可以在“字段”中指定字段,并保持视图不变

def index(conn, params) do
  render("index.json-api", data: data, opts: [fields: %{"table_name"=> "fields,in,csv,style"}])
end
有关详细信息,请参阅中的条件属性包含

你的问题是什么?-请随意使用一个视图来呈现不同的属性,没问题。我对所有视图都使用Ja serializer,因此,我更喜欢这种解决方案only@mudasobwa一个视图怎么可能有多个属性?@mudasobwa您能给我一个建议或给我一个链接,说明如何在一个视图中有多个属性。@mudasobwa请帮助。因此,我正在使用ja序列化程序渲染属性。Ja serializer还帮助序列化关联,并具有其他功能。当我使用您指定的方法时,我将无法完成所有这一切(在这种情况下,Ja序列化程序的呈现方法将始终是首选方法,而此呈现方法将毫无用处)。这就是为什么我只需要Ja序列化程序中的某些内容。