我应该如何在Rails中的多个控制器中渲染对象?

时间:2014-01-09 23:26:25

标签: ruby-on-rails coding-style

我有一个模型,用户可以在我的网站上以多种方式进行修改。首先,我使用控制器为一组视图创建了它的方法,例如:

#controller1.rb
def edit_object
end

def render_object
end

我可以以相同的方式设置多个控制器,但每个控制器中的一些(不是全部)逻辑是相同的。应该让一个main_object_controller来管理模型并让其他控制器调用main_object_controller中的方法,将方法保存在单独的控制器中,或者让每个视图的每个方法都修改main_object_controller中的模型? / p>

1 个答案:

答案 0 :(得分:0)

这听起来是了解Rails concerns的好时机。

它们基本上是ruby模块,您可以在其中定义需要在多个位置重用的方法;此外,Rails 4会自动加载app/models/concernsapp/controllers/concerns中的所有文件。

例如,假设您在app/controllers/concerns/edit_methods中有疑虑:

module EditMethods
  def edit_object
    # ...
  end

  def render_object
    # ...
  end
end

要在其他控制器中使用这些功能,您只需要包含以下问题:

class PostsController < ApplicationController
  include EditMethods

  def edit
    # you can call all methods defined in the concern
    edit_object

    # ...
  end
end