我正在做一个 Rails 项目。有人建议我制作一个控制器 Home_Controller,它可以处理站点的请求。我有两个不同的模型, Post 和 Person (顺便说一句,它们是完全独立的)。我想new
在 Home Controller 中定义方法,但编写控制器方法new_person
和new_post
.
谢谢你的帮助!
我正在做一个 Rails 项目。有人建议我制作一个控制器 Home_Controller,它可以处理站点的请求。我有两个不同的模型, Post 和 Person (顺便说一句,它们是完全独立的)。我想new
在 Home Controller 中定义方法,但编写控制器方法new_person
和new_post
.
谢谢你的帮助!
它违反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 个文件中有多个手牌时。
可能会继续说。在上下文之外很难确切地知道,但是是的,这会违反惯例。
与约定问题不同的是可维护性和可读性,拥有一个庞大的控制器文件将是开发的地狱。