我有一个控制器文件,
abc_controller.rb.
我在其中定义了show方法。
我有一个视图文件,
show.html.haml
在app / views / abc /
中在我的routes.rb文件中,我提供以下命令
resources :abc
我有一个按钮
= link_to 'abc', abc_path, class: 'btn btn-default'
但是当我点击按钮时,它不会进入新页面。
我收到不存在的路线错误。 由于我是rails的新手,我无法弄清楚问题是什么。
答案 0 :(得分:0)
如果您执行resources
(复数形式),则显示的结果路线需要ID:/abc/:id(.:format)
,因此abc_path
要求您传递:id或对象。如果您正在处理单数abc(resource :abc
),则生成的路径不需要:id,因此您的代码应该可以工作(这种情况不太常见,但很难用您的" abc"例子。
答案 1 :(得分:0)
您收到错误,因为没有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
第一列是命名路线。因此,为了进入index
的{{1}}操作,路由名为abc_controller
。有一个abc_index_path
,但它需要一个abc_path
参数,这意味着你需要传递一些东西。在您的情况下,传递给此方法没有明确的价值,因此试用只会使用id
,这会将您重定向到abc_path(1)
。这将转到将/abc/1
设置为params[:id]
的展示操作。