【问题标题】:Ruby on Rails 3.2.1 RoutesRuby on Rails 3.2.1 路由
【发布时间】:2012-02-06 18:24:26
【问题描述】:

刚开始将我的第二个应用程序从 rails 2.3.11 转换为 3.2.1 - 但是我的路线遇到了问题..

这是我的旧路线文件:

map.namespace(:admin) do |admin|
 admin.resources :products, :has_many => [:categories, :product_versions, :extra_documents]
 admin.resources :product_versions, :has_many => [:sub_versions]
 admin.resources :categories, :has_many => [:sub_categories, :sub_emanuals, :sub_tests]
end

这就是我现在在 rails3 routes.rb 文件中的内容:

namespace :admin do
  resources :products
  resources :product_versions
  resources :categories
end

在我看来,这似乎导致了问题:

<%= link_to "Edit Categories", admin_product_categories_url(product) %>

因为在 rails 3 中不再理解这是什么,我在这个应用程序中使用这种格式很多。 在看到“rake routes”的输出后,我尝试解决这个问题,我使用了:

<%= link_to "Edit Categories", admin_categories_url(product) %>

但是,在提供的 html 代码中,它给了我一个“http://localhost:3000/admin/categories.21”的 URL - 请参阅 .21 而不是 /21

请教其他人吗?

提前致谢, 安德鲁

【问题讨论】:

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


    【解决方案1】:

    应该是

      admin_category_url(category)
    

    即。一类

    话虽如此,

    你不想:

    admin_product_category(product, category)
    

    在这种情况下你需要嵌套你的路由:

    namespace :admin do
      resources :products do
        resources :categories
      end
      resources :product_versions
    end
    

    【讨论】:

    • 太棒了!我将使用嵌套路由,因为我确实需要 admin_product_category(product, category) - 但是,当我将它们放置到位时,我收到此错误“找不到 Admin::ProductsController 的操作‘显示’”有什么想法吗?
    • admin/products 目录下至少需要有一个show view文件。似乎产品控制器存在,因此它很可能是视图文件;该操作不是严格要求的,我假设您没有。
    • 这似乎是我的索引操作的问题,我让它做了一个 redirect_to :action => 'list' 将它换成渲染似乎可以解决问题
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-04-27
    • 2011-04-17
    • 1970-01-01
    • 2014-11-08
    • 2018-12-28
    • 2011-05-11
    • 2013-05-08
    相关资源
    最近更新 更多