undefined局部变量或方法`new_media_path' - 资源资源

时间:2012-03-24 14:24:54

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.1

我有一个奇怪的问题:

启动服务器后出现此错误:

undefined local variable or method `new_media_path'

要修复此问题,我必须转到routes.rb并更改

resources :media

resource :media

再次

resources :media

这很烦人。有什么想法可以解决这个问题吗?

2 个答案:

答案 0 :(得分:5)

您应该尝试new_medium_path,因为mediamedium的复数形式

如果您运行rake routes,您将看到所有可用的路线。

答案 1 :(得分:3)

您还可以使用Inflector类通知rails有关正确复数的信息。它处理大多数工作正常,但像“媒体”这样的非标准复数并不总是预先定义的。要添加自己的内容,请修改 config / initializers / inflections.rb ,并在最后添加:

ActiveSupport::Inflector.inflections do |inflect|
 inflect.irregular 'medium', 'media'
end

这应该让Rails处理所有复数/单数 - 注意这会影响它认为DB表名也是如此,所以它会期望模型 class Medium ,并且表格名称为媒体

要将复数和单数转换为相同的内容(即始终为'media'),请使用:

ActiveSupport::Inflector.inflections do |inflect|
 inflect.uncountable 'media'
end