创建不需要模型的 Rails 视图 + 控制器?
Posted
技术标签:
【中文标题】创建不需要模型的 Rails 视图 + 控制器?【英文标题】:Creating a rails view + controller that doesn't require a model? 【发布时间】:2018-06-21 02:33:28 【问题描述】:对于实际上不需要模型的页面的正确设计是什么,我有点困惑。
例如,我想创建一个导出页面,允许用户将各种其他模型导出为 CSV。
显然我需要一个视图(很可能是一个show.html.erb
文件)和一个控制器;但是制作某种Export
模型并没有什么意义,创建新/编辑/索引视图也是如此。
为我的导出页面手动创建视图+控制器是正确的方法吗?在阅读了如此严重地基于 MVC 模式的 rails 文档之后没有模型似乎很奇怪,但我也看不出有任何理由为什么我“需要”在这种情况下遵循该模式,其中模型只是没有意义。
【问题讨论】:
【参考方案1】:我猜你正在使用scaffold
生成器,确实创建了一个模型。
如果您只想创建视图和控制器,请在终端中输入。
rails g controller exports
这将创建与控制器关联的视图、控制器和资产。只需添加路线。
resources :exports
【讨论】:
【参考方案2】:您不需要模型。如果您有模型,rails 中的生成器和假设通常会更好地工作,但您不需要模型。您可以手动创建控制器和视图,或使用rails g controller exports
。
您可能会查看表单对象以在控制器中提供模型 - 这些是普通的旧 ruby 对象,提供没有数据库记录的模型。
Export 的表单对象可能这样开始:
class Export
include ActiveModel::Model
include ActiveModel::Validations::Callbacks
end
【讨论】:
【参考方案3】:在您的app/controllers
文件夹中创建一个controller
,如下所示:
class ExportsController < ApplicationController
def show
@export = ... # Your query here
end
end
在app/views
文件夹内创建一个名为exports
的文件夹。
在您刚刚创建的exports
文件夹中创建您的show.html.erb
。
像这样手动添加您的exports#show
路由:
resources "exports", only: [:show]
你应该很高兴。在 ExportsController 中添加必要的 auth 和 before_action 方法。
【讨论】:
以上是关于创建不需要模型的 Rails 视图 + 控制器?的主要内容,如果未能解决你的问题,请参考以下文章