【问题标题】:How to build a view object in Rails for JavaScript use如何在 Rails 中构建视图对象以供 JavaScript 使用
【发布时间】:2016-11-07 09:50:33
【问题描述】:

我想要实现的是在将对象传递给我的 React 代码(使用 React Rails gem)之前使用装饰器(可能是 Draper)来构建一个对象。我可以轻松地装饰对象并在视图中使用方法,但如果我通过 React 道具传递数组,这是不可能的:

<%= react_component('Project', { name: project.name, choices: project.options %>

我将无法在我的 JavaScript 代码中访问修饰的 project.options.total 方法。

还有其他构建这些对象的方法吗?我过去使用Active Model Serializers,但这不是一个单页应用程序,它只是 Rails 视图中的一个 React 组件。

【问题讨论】:

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


    【解决方案1】:

    一种解决方案是创建一个方法,在 JSON 字符串传递给 React 组件之前将其添加到所需字段。

    我想我设法通过使用Active Model Serializers 找到了更清洁的解决方案。您创建一个序列化程序并在您的控制器方法中构建 JSON:

    @project_json = ActiveModelSerializers::SerializableResource.new(@projects).as_json
    

    附带说明一下,使用作用域可以轻松地将current_user 添加到该序列化程序中:

    ActiveModelSerializers::SerializableResource.new(@projects, scope: current_user, scope_name: :current_user).as_json
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-06
      • 2010-09-21
      • 1970-01-01
      • 1970-01-01
      • 2012-08-30
      • 2015-11-05
      相关资源
      最近更新 更多