[英]ruby on rails- non-existent route
我有一个控制器文件,
abc_controller.rb.
我已经在其中定义了 show 方法。
我有一个视图文件,
show.html.haml
内部应用程序/视图/ abc/
在我的 routes.rb 文件中,我给出了以下命令
resources :abc
我有一个按钮
= link_to 'abc', abc_path, class: 'btn btn-default'
但是当我点击按钮时,它不会进入新页面。
我收到不存在的路由错误。 由于我是 Rails 的新手,我无法弄清楚问题是什么。
如果你做resources
(复数)显示的结果路由需要一个 id: /abc/:id(.:format)
,所以abc_path
要求你传递 :id 或一个对象。 如果您正在处理单个 abc ( resource :abc
),则生成的路径不需要该 :id,因此您的代码应该可以工作(这不太常见,但很难用您的“abc”示例说明。
您收到一个错误,因为没有像abc_path
这样的路径。 运行rake routes
,你会看到 Rails 理解的路由。 在您的示例中, resources :abc
生成以下路由。
abc_index GET /abc(.:format) abc#index
POST /abc(.:format) abc#create
new_abc GET /abc/new(.:format) abc#new
edit_abc GET /abc/:id/edit(.:format) abc#edit
abc GET /abc/:id(.:format) abc#show
PATCH /abc/:id(.:format) abc#update
PUT /abc/:id(.:format) abc#update
DELETE /abc/:id(.:format) abc#destroy
第一列是命名路由。 所以为了到达abc_controller
的index
动作,路由被命名为abc_index_path
。 有一个abc_path
但它需要一个id
params 这意味着你需要向它传递一些东西。 在您的情况下,没有确定的值可以传递给此方法,因此作为试用,只需使用abc_path(1)
将您重定向到/abc/1
。 这将转到params[:id]
设置为1
的 show 操作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.