Ruby on rails 向现有Rails应用程序添加视图-简单吗?

Ruby on rails 向现有Rails应用程序添加视图-简单吗?,ruby-on-rails,Ruby On Rails,我有一个简单的概念问题一直困扰着我。我试图简单地将一个名为“Owner Show”的新视图添加到我拥有的收件人控制器中。这将是一个新页面,显示收件人的所有者,“仅供所有者查看”有关该收件人的详细信息。我创建了hello world erb,并将其命名为ownershow.html.erb。我向控制器添加了一个名为ownershow的空白操作。我创建了一个名为map.ownershow'/recipients/:action/:id“:action=>“ownershow”的新路由。它爆炸了。我做

我有一个简单的概念问题一直困扰着我。我试图简单地将一个名为“Owner Show”的新视图添加到我拥有的收件人控制器中。这将是一个新页面,显示收件人的所有者,“仅供所有者查看”有关该收件人的详细信息。我创建了hello world erb,并将其命名为ownershow.html.erb。我向控制器添加了一个名为ownershow的空白操作。我创建了一个名为map.ownershow'/recipients/:action/:id“:action=>“ownershow”的新路由。它爆炸了。我做错了什么?听起来很简单。

这部分取决于您使用的Rails版本,但我猜您的路由不太正确

我相信,如果您想要命名的路由,您需要按如下方式声明路由:

map.ownershow :controller => 'recipients', :action => 'ownershow'
但是,命名路由与常规路由有很大不同。a创建了一个映射,您可以简单地说
myapp.com/ownershow
,而不是
myqpp.com/recipients/ownershow
。您可能只想添加到类似的路由中:

map.resources :recipients, :member => { :ownershow => :get } 
整本书读得很好,有助于解释许多此类问题

map.ownershow '/recipients/:action/:id" :action =>'ownershow'
应该是

map.ownershow '/recipients/ownershow/:id", :controller => 'recipients', :action =>'ownershow'
第一项是您试图匹配的路径和从中选择的参数,其余的是您正在为该路径的所有请求硬编码的值(这是一个简化,但您明白了这一点)

必须至少以某种方式(从路径匹配器或硬编码)为所有路由指定控制器和操作