我是Ruby on Rails的新手,我正在尝试创建我的第一个应用程序。我使用资源丰富的路线,例如'科目
:resource :subjects do
member do
get :delete
end
end
我已经为其方法创建了控制器SubjectsController和视图。在索引视图中,我试图创建一个链接来显示如下视图:
link_to("Show", subject_path(1))
但它返回错误:
undefined method `subject_path' for #<#<Class:0x007fc820551488>:0x007fc8229468c0>
Did you mean? subjects_path
与帮助者#new_subject_path&#39;相同的事情。但是奇怪的new_subject s _path并没有给出任何错误并创建了正确的链接。我的应用程序出了什么问题?我应该使用复数作为路径助手吗?
答案 0 :(得分:1)
我相信您的问题是因为您使用的是resource
单数,而您的意思是使用resources
复数版本。尝试将路线更改为:
resources :subjects do
member do
get :delete
end
end
你应该会发现你得到了预期的rails url helper方法。
约定是当您希望存在多个资源项目时,使用复数版本resources :subjects
,但是当您只希望存在单个实体时,请使用将创建的单数resource :subject
不同的路线和帮助者不需要id
参数。
答案 1 :(得分:0)
如果您需要单一资源,请将:subjects
更改为:subject
。
resource :subject do
member do
get :delete
end
end
或使用完整resources
代替resource
:
resources :subjects do
member do
get :delete
end
end
无论是哪种更改,您都可以使用subject_path
帮助器。但是对于第一个,你不能传入ID。如果您需要,请使用第二个。