如何在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
,您还需要设置controller
和model
方面。我认为您已经这样做了,但为了帮助您了解更多,我将在下面概述:
视图:控制器操作
如果您想显示来自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中添加视图的主要内容,如果未能解决你的问题,请参考以下文章