如何在rails中添加视图

Posted

技术标签:

【中文标题】如何在rails中添加视图【英文标题】:How to add a view in rails 【发布时间】:2013-12-14 09:05:27 【问题描述】:

我对 Rails 很陌生,但我已经搜索了很多如何做到这一点,但它似乎对我不起作用。我试图为我的模型创建一个名为 steppy_steps 的新视图,因此我在视图目录中创建了一个名为 request.html.rb 的新文件,将其添加到我的路线中,match '/request' => 'pages#request', 还尝试获取“steppy_tests/home”,最后添加(def request, end)到我的Steppy_Tests_Controller.rb 但是当我检查 url 它给了我一个error:Couldn't find SteppyTest with id=home

我不知道该怎么做任何帮助都会很棒!提前致谢。

【问题讨论】:

只需添加视图文件'views/view_name/new.erb'等 我在 'views/steppy_steps/request.html.erb' 中创建了一个文件,但它似乎不起作用 你有合适的处理程序吗? 为你写答案 这就是我认为我在 steppy_tests_controller.rb 中所做的事情,但从您的评论来看,这不对吗? 【参考方案1】:

您应该阅读MVC programming pattern(这是 Rails 的基础)

为了创建view,您还需要设置controllermodel 方面。我认为您已经这样做了,但为了帮助您了解更多,我将在下面概述:


视图:控制器操作

如果您想显示来自steppy_steps 控制器的视图,您需要首先设置一个控制器操作来处理请求。您通常会为此使用自命名控制器(控制器名称 steppy_steps),并为此执行各种操作

在您的路由中,您将像这样“捕获”对steppy_steps 控制器的请求:

#config/routes.rb
resources :steppy_steps

这将创建一组RESTful routes,然后您可以将其转换为您的控制器,如下所示:

#app/controllers/steppy_steps_controller.rb
def index
   #Index code
end

def show
   #Show code
end

这将允许您创建一个views 目录,其中可以包含/views/steppy_steps/show.html.erb/views/steppy_steps/index.html.erb 的视图


路线非常重要

您遇到的错误是由您将/home 发送到您的视图引起的

这里的问题是,如果你使用的路由有一个内置的 id 参数(show 动作路由有这个),那么 Rails 会在 URL 后面寻找额外的参数

要解决此问题,您必须提供更多代码,但我也相信您会更好地了解 Rails 的基础知识


添加路线

您可以根据需要添加路线和视图

如果您要添加 requests 路线/视图,我会这样做:

#config/routes.rb
resources :steppy_steps do
  collection do
    get :requests
  end
end

这将允许您创建/steppy_steps/requests

【讨论】:

感谢这有很大帮助!抱歉,我知道我没有提供足够的信息,我正在使用我创建的脚手架,所以它已经有了它应该创建的基本文件,比如 show new 等,我只是想在这个称为 requests 的过程中添加一个额外的 vie 非常感谢!我也刚刚发现了一个命令让我也创建它:rails g controller controllername new create 对不起,现在我已经成功创建了一个新视图,但现在我无法从中引用我的变量而不会出现错误,例如使用与 new 或 show 中相同的代码给我错误:未定义nil:NilClass 的方法“目标”。我假设我必须在某个地方定义这个连接?

以上是关于如何在rails中添加视图的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Rails 中为现有模型添加自动完成标记?

如何将自定义视图+控制器添加到模型?

Rails 6 路线 - 如何添加自定义“新”路线?

如何在 Rails 视图中注释代码?

如何将 Rails 视图助手提取到 gem 中?

Rails:如何访问视图中的belongs_to字段?