0

我在理解实际路由到的配置/路由时遇到了一些麻烦。例如,假设我开始了一个全新的项目并生成了一个用户控制器并编辑了我的 config/routes.rb 看起来像这样:


config/routes.rb

SampleApp::Application.routes.draw do

match '/signup', to: 'users#new'

end

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


 users_controller.rb

 class UsersController < ApplicationController

 def new
 end

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

此外,默认情况下将“资源:用户”添加到 config/routes.rb 是否将视图模板文件名与我上面提到的行为相匹配,以便视图必须以其“控制器/操作”名称命名?

抱歉打扰了,我只是想弄清楚 Rails 的魔力是什么,什么不是。

4

2 回答 2

2

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

但是您可以通过添加显式渲染来轻松地覆盖它,例如,

render :rubyonrailsmeetup

为清楚起见进行编辑:此调用render进入控制器代码,而不是 config/routes

于 2012-09-21T19:32:44.740 回答
0

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

这些是默认值render :view_file_rel_path,您可以通过在操作结束时给出来呈现操作中的任何视图

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

在routes.rb中添加的任何内容都只与控制器直接相关,即它匹配请求并将其映射到控制器/动作。视图的逻辑只出现在动作代码中

于 2012-09-21T19:37:06.403 回答