【问题标题】:Ruby on Rails Controller methods separately?Ruby on Rails 控制器方法分开?
【发布时间】:2012-09-06 08:50:48
【问题描述】:

只是为了接受教育,我想知道为 GET 和 POST 操作使用一个控制器方法是否是一种好习惯,例如 def signup ... end,它将显示一个表单,如果 request.post? 为真 - 然后执行所有操作业务逻辑等等。这是什么好方法,还是我应该将这些方法彼此分开?

感谢您的建议!

【问题讨论】:

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


    【解决方案1】:

    我认为为发布请求定义单独的操作会更好。您显然可以在同一个操作中完成它,但是如果您要在 sign_up 操作中编写一个大的 if..else 块,您不妨使用另一个操作。如果您缺少名称,则可以将其称为 create :P 。它使代码更具逻辑性和可读性。

    【讨论】:

    • +1,我也会关注 REST。另外,一个方法应该做一件事
    • 好的。我会坚持下去的!谢谢!
    【解决方案2】:

    无论哪种方式,代码组织几乎没有区别。

    使用单独的方法,它看起来像:

    def signup_create
      # create here
    end
    def signup_new
      # render here
    end
    

    用同样的方法,它看起来像:

    def signup
      if request.post?
        # create here
      else
        # render here
      end
    end
    

    看起来他们都组织得很好。选择你喜欢的。如果它们是默认的 CRUD 方法,那么单独的方法很好,因为已经想到了单独的名称(例如,newcreateeditupdate)。

    如果它们不是 CRUD 或页面上的额外表单,并且您只能为其想一个名称(例如 signup),请随意重载名称并使用相同的方法。

    【讨论】:

    • 谢谢!现在我对自己的方法更有信心了:)
    【解决方案3】:

    我认为,如果您正在使用(或将要使用)基于方法的授权(例如 cancan),则针对不同请求的单独操作会更好。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-07
      • 1970-01-01
      • 2012-07-18
      • 2011-03-05
      相关资源
      最近更新 更多