2

我正在做一个 Rails 项目。有人建议我制作一个控制器 Home_Controller,它可以处理站点的请求。我有两个不同的模型, Post 和 Person (顺便说一句,它们是完全独立的)。我想new在 Home Controller 中定义方法,但编写控制器方法new_personnew_post.

谢谢你的帮助!

4

2 回答 2

3

违反MVC 模式,因为您Home_Controller应该只控制Home模型。

您应该有 aPeopleController和 aPostsController来区分您的关注点。

话虽如此 - 拥有您所要求的系统并非完全闻所未闻。您只需创建自己的自定义路线routes.rb以匹配您想要的。例如,您的 HomeController 可能看起来像,

class HomeController < ApplicationController
  ...
  def new_person
    @person = Person.create
  end
  def new_post
    @post   = Post.create
  end
end

路线看起来像,

get 'people/new' => 'home#new_person'
get 'post/new' => 'home#new_post'

主要问题是,当您偏离此约定时,您会遇到非常不可读且难以维护的代码。尤其是当您在 1 个文件中有多个手牌时。

于 2013-07-16T19:58:53.430 回答
1

可能会继续说。在上下文之外很难确切地知道,但是是的,这会违反惯例。

与约定问题不同的是可维护性和可读性,拥有一个庞大的控制器文件将是开发的地狱。

于 2013-07-16T19:57:31.567 回答