嘿伙计们和圣诞快乐!
我刚接触ruby on rails并且我对某些东西仍然有些困惑:
我何时需要创建新的控制器?何时不需要?
我想用一个搜索框创建一个应用,并搜索所有文章。我应该为起始页(搜索框)和搜索创建一个控制器吗?我应该为静态页面创建控制器吗?
我应该使用管理界面gem还是创建自己的?
普通用户现在应该可以访问创建文章,只需要管理员。我应该使用其中一个管理界面宝石还是创建自己的宝石?
答案 0 :(得分:2)
Ruby on Rails遵循MVC框架,控制器是包含您的操作的类,因此您需要为网站提供的每个功能添加操作。 从技术上讲,你可以在一个控制器中拥有所有动作,但这很糟糕,所以我们通常会创建不同的控制器来以更好的方式组织你的路线和代码。 Follow the Rails guide on controllers.
答案 1 :(得分:2)
Ruby on Rails确实是MVC,这意味着控制器将模型连接到视图。因此,一般来说,更好的做法是考虑更多面向资源:根据您想要找到/呈现的资源,您可以创建一个控制器。在你的情况下像:
ArticlesController
:您的主视图,包含搜索框PagesController
:对于静态页面,如果你需要一些erb / haml admin/ArticlesController
:用于管理文章现在,完全静态的页面也可以放在public
文件夹下,不需要控制器,除非你需要在页面上有一些动态信息(例如文章总数)。
关于您的搜索框:imho这只是索引页面的参数。例如。在索引上显示十篇最新文章,在搜索某些术语时,您会显示相关文章,但是在同一个控制器和相同的操作上。
关于管理界面:是的,使用像rails_admin或active_admin这样的宝石,它会让你立刻开始。所以一定要这样做。但是,这些宝石当然非常笼统,可能完全不适合您的需求。应该是这种情况,您可以随时轻松恢复。
HTH。
答案 2 :(得分:1)
由于Khaled建议Rails是MVC架构,所以每个页面都有控制器。即使您现在可能有静态页面,但后者当您尝试使网站成为动态页面时,您将在很大程度上混淆了为特定视图页面添加方法的位置。
通常最好使用宝石而不是从头开始制作宝石。 您可以查看这个link,它教您如何使用设计和cancan与twitter bootstrap(视图)。但是如果你打算学习rails,那么我建议你从头开始学习,因为你会知道发生了什么。您可以看到这个tutorial,它可以完成大部分任务。
享受Rails !!
答案 3 :(得分:1)
无需创建用于搜索的控制器。因为您已经为文章创建了一个控制器,所以您需要在文章控制器中创建搜索操作。因此,与文章相关的搜索操作
class ArticlesController < ApplicationController
def search
@articles = Article.search(params[:search])
end
end
对于创建新文章的用户访问权限,您可以使用devise gem