繁体   English   中英

ruby on rails-不存在的路线

[英]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_controllerindex动作,路由被命名为abc_index_path 有一个abc_path但它需要一个id params 这意味着你需要向它传递一些东西。 在您的情况下,没有确定的值可以传递给此方法,因此作为试用,只需使用abc_path(1)将您重定向到/abc/1 这将转到params[:id]设置为1的 show 操作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM