【问题标题】:Rails Active Model serialize best way to apply different serializes for one actionRails Active Model 序列化为一个动作应用不同序列化的最佳方法
【发布时间】:2017-09-22 06:44:35
【问题描述】:

伙计们! 我正在寻找这种情况的最佳方法,我将在下面进行描述。

页面有两种不同的模式。例如网格和列表模式。 两种模式都需要两种不同的表示。

所以,目前,我有一个路由操作和标志参数(类似于“预览”)来检测需要应用哪个序列化程序。

我想这不是最好的方法。 让我们想象一下。未来还会有两种不同的视图模式。 所以,在某种程度上,我需要管理所有这些方式。

谢谢!

【问题讨论】:

    标签: ruby-on-rails active-model-serializers


    【解决方案1】:

    您可以使用保护样式条件,甚至稍后将它们移动到单独的方法中。如果您有疑问,那完全可以。

    serialize = SerializerOne if a
    serialize = SerializerTwo if b
    ...
    serialize = SerializerN if n
    
    render json: result, each_serializer: serialize 
    

    【讨论】:

      【解决方案2】:

      我希望您可以使用const_get 执行此操作,通过遵循简单的约定来动态加载您想要的序列化程序类。

      假设您可能有两个用于模式和网格的序列化程序。在名为 Mode 的同一命名空间下创建它们,例如

      serializers/mode/grid_serializer.rb(Mode::GridSerializer)
      serializer/mode/list_serializer.rb(Mode::ListSerializer)

      在控制器操作中,您会收到参数预览值"grid",您可以通过执行加载序列化程序类

      serializer = Mode.const_get(params["preview"].camelcase + "Serializer")
      

      我希望这会有所帮助。谢谢。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-03-02
        • 2011-09-23
        • 1970-01-01
        相关资源
        最近更新 更多