Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails初学者配置/routes.rb问题_Ruby On Rails_Ruby - Fatal编程技术网

Ruby on rails Rails初学者配置/routes.rb问题

Ruby on rails Rails初学者配置/routes.rb问题,ruby-on-rails,ruby,Ruby On Rails,Ruby,我在理解配置/路由实际路由到什么方面有点困难。例如,假设我启动了一个全新的项目,生成了一个用户控制器,并编辑了我的config/routes.rb,如下所示: 我启动服务器,正如预期的那样,它说我的用户控制器中没有“新”操作。我创建了一个: users\u controller.rb 类UsersController

我在理解配置/路由实际路由到什么方面有点困难。例如,假设我启动了一个全新的项目,生成了一个用户控制器,并编辑了我的config/routes.rb,如下所示:



我启动服务器,正如预期的那样,它说我的用户控制器中没有“新”操作。我创建了一个:


users\u controller.rb
类UsersController

我刷新页面,正如预期的那样,它告诉我需要一个用户/新模板。所以我的问题是:我的视图模板是否总是必须与“(controller name)/(action name)”格式(在本例中为users/new.html.erb)中的控制器和操作名称相同?如果控制器操作链接到站点的某个功能,是否可以将我的模板命名为随机的(例如,users/rubyonrailsmetup.html.erb而不是users/new.html.erb)

另外,在默认情况下,将“resources:users”添加到config/routes.rb是否会将视图模板文件名与我上面提到的行为相匹配,以便视图必须以其“controller/action”名称命名


抱歉打扰了,我只是想弄清楚什么是Rails魔法的一部分,什么不是

默认情况下,如果控制器操作中未调用其他
render
redirect
,Rails将尝试使用与操作相同的名称呈现模板。基本上,在每个控制器操作的末尾都有一个隐式的
render:action

但是,通过添加显式渲染,您可以很容易地覆盖此选项,例如

render :rubyonrailsmeetup
为清晰起见进行编辑:对
render
的调用在控制器代码中,而不是在config/routes中

我的视图模板是否必须始终与“(控制器名称)/(操作名称)”格式中的控制器和操作名称相同

这些是默认值,您可以通过在操作的末尾提供
render:view\u file\u rel\u路径
来渲染操作中的任何视图

默认情况下,将“resources:users”添加到config/routes.rb是否与视图模板文件名匹配


routes.rb中添加的任何内容仅与控制器直接相关,即它匹配请求并将其映射到控制器/操作。视图逻辑仅出现在操作代码中,因此将
匹配'/signup',到:'users#new',render:users/rubyonrailsmetup
以覆盖默认值,在这种情况下,默认值为
render:users/new
。您可以在操作结束时添加渲染行。。。如果你想推翻,我开始明白了。谢谢各位。因此,config/routes首先进入控制器,如果操作中没有
render
,那么默认情况下,它只进入文件名为“(controller)/(action).html.erb“correct”的视图。是的,您得到了它。此外,重定向也会阻止它呈现该模板(正如您可能期望的那样)。此外,如果视图
rubyonrailsmetup.html.erb
位于/views/users中,则它只是
render:rubyonrailsmetup
,您不需要指定它是用户模板。但是,您可以通过指定路径(相对于/views/)从非用户的目录中呈现视图,例如,
render'events/rubyonrailsmetup'
将查找视图/events/rubyonrailsmetup.html.erb,但大多数时候控制器中的操作都是空白的(例如,对于不需要与数据库交互的静态页面)。因此,在这些情况下,视图将由“默认值”确定,您的意思是对的吗?是的,要呈现的视图始终由默认值确定,即“controller\u name/action\u name.html”,除非您在操作中明确写入了
render
。。
 users_controller.rb

 class UsersController < ApplicationController

 def new
 end
render :rubyonrailsmeetup