ruby on rails:路径和URL帮助程序不使用单数名称

时间:2017-08-23 01:23:28

标签: ruby-on-rails

我是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并没有给出任何错误并创建了正确的链接。我的应用程序出了什么问题?我应该使用复数作为路径助手吗?

2 个答案:

答案 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。如果您需要,请使用第二个。