首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rails3控制器多个/单个路由

Rails3控制器多个/单个路由
EN

Stack Overflow用户
提问于 2011-10-07 21:06:06
回答 4查看 685关注 0票数 4

我的rails3应用程序中名为nas的控制器出现了一些问题。

我的ruby应用程序连接到一个现有的DB,因此表名必须保持为nas。

在我的模型中,我以前能够做到这一点:

代码语言:javascript
复制
set_table_name

但我不知道如何在我的控制器/路由中做到这一点。

现在,我的路由包含以下内容:

代码语言:javascript
复制
resources :nas

输出结果为:

代码语言:javascript
复制
        new_na GET    /nas/new(.:format)               {:action=>"new", :controller=>"nas"}
       edit_na GET    /nas/:id/edit(.:format)          {:action=>"edit", :controller=>"nas"}
            na GET    /nas/:id(.:format)               {:action=>"show", :controller=>"nas"}
               PUT    /nas/:id(.:format)               {:action=>"update", :controller=>"nas"}
               DELETE /nas/:id(.:format)               {:action=>"destroy", :controller=>"nas"}

如您所见,rails去掉了“s”

我该如何解决这个问题?

谢谢

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-10-07 21:32:23

这很让人困惑,因为我不知道什么是"na“或"nas”。从你的问题中我有一个想法,你总是想把它称为"nas",既有复数也有单数。

如果是这样,那么答案就是把它放在config/initializers/inflections.rb

代码语言:javascript
复制
ActiveSupport::Inflector.inflections do |inflect|
  inflect.uncountable "nas"
end

这也将使您的Nas模型在默认情况下使用nas表,因此不需要set_table_name

但是,请注意,如果您不想为控制器使用Nas,则没有理由这样做!您可以随心所欲地为它们命名,只要这反映在routes.rb中,并且您在控制器中使用正确的模型。

票数 4
EN

Stack Overflow用户

发布于 2011-10-07 21:24:48

我猜,也许你应该尝试覆盖命名约定,因为'nas‘不是复数?(假设这就是s下降的原因)

代码语言:javascript
复制
# Inflection rule
Inflector.inflections do |inflect|
  inflect.irregular 'nas', 'nases'
end

environment.rb

编辑:使用而不是environment.rbconfig/initializers/inflections.rb (感谢Benoit Garret)

票数 2
EN

Stack Overflow用户

发布于 2011-10-07 21:30:31

我的ruby应用程序连接到一个现有的数据库,因此表名必须保持为

那么为什么您的路由/控制器也必须命名为nas?一旦你在你的模型级别修复了它,一切都会好起来的。

代码语言:javascript
复制
# model.rb
class WhateverILikeToCallMyModel
  set_table_name "nas"
end

# controller.rb
class WaynesController << ApplicationController
  # ...

  def index
    @items = WhateverILikeToCallMyModel.all
  end
end

# routes.rb
resources :waynes
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7687686

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档