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

时间:2012-09-21 19:24:01

标签: ruby-on-rails ruby

我在理解实际路由到的配置/路由时遇到了一些麻烦。例如,假设我开始了一个全新的项目,并生成了一个用户控制器并编辑了我的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 / ruby​​onrailsmeetup.html.erb而不是users / new.html.erb)?

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

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

2 个答案:

答案 0 :(得分:2)

如果在控制器操作中没有调用其他renderredirect,则Rails会尝试使用与操作相同的名称呈现模板。基本上,每个控制器操作结束时都有一个隐式render :action

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

render :rubyonrailsmeetup

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

答案 1 :(得分:0)

  

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

这些默认值,您可以通过在操作

结束时提供render :view_file_rel_path来呈现操作中的任何视图
  

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

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