【问题标题】:Rails - best place for helping codeRails - 帮助编写代码的最佳场所
【发布时间】:2013-06-07 09:07:58
【问题描述】:

这是一个最佳实践问题。我有一个模型存储一些参数,用于生成 javascript 文件。一个模型实例生成一个文件。我使用 erb 模板进行参数替换。问题是 - 在每次模型更新后将生成 js 文件的代码放在哪里?模型文件看起来不是一个好的选择,因为模型不应该知道所有的 erb 和文件混乱。通常在用户请求的情况下调用控制器,但情况并非如此。我已经开始关注观察者,但仍有疑问。

【问题讨论】:

  • 你到底为什么一直在生成新的JS文件?这听起来像是一个非常糟糕的做法。

标签: ruby-on-rails model-view-controller model


【解决方案1】:

首先,将参数渲染为 js 代码的代码应该在视图中。视图用于生成输出。

其次,我会将要写入文件的代码放在控制器中。控制器链接模型和视图。
必须有一些事件来生成文件。可能是对象的创建、对象的更改或生成文件的一些显式请求。
这些事件中的每一个都应由控制器处理。

观察者更多的是处理“副作用”。

【讨论】:

    【解决方案2】:

    观察者将是一个很好的解决方案:首先在终端中运行rails generate observer jsfile。我使用jsfile 作为您的型号名称。

    根据您的需要编辑您的观察者,例如

    class JsfileObserver < ActiveRecord::Observer
        observe :jsfile
    
        # after_save works both for update and create, which I guess is what you want
        def after_save(record)
            # generate the file with the params from your record
        end
    end
    

    最后,别忘了调整你的config/application.rbfile

    # Activate observers that should always be running.
    config.active_record.observers = :jsfile_observer
    

    当然你必须重启你的服务器;)

    【讨论】:

      猜你喜欢
      • 2021-06-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-06
      • 2016-10-24
      • 2013-10-09
      • 1970-01-01
      相关资源
      最近更新 更多