我的路由中有名称空间.rb

  namespace :businesses do
    resources :registration
  end

我的控制器位于子目录Businesss/registration\u controller中.

def new
  @business = Business.new
end

在我看来,我想这样做form_for @business do |f| ...,但我得到了以下错误:

No route matches {:controller=>"businesses", :action=>"create"}

重新启动服务器,我也得到了以下信息:

undefined methodbusinesses_path' for #<#:0x10339bb20>`

以下是我的耙子路由:

                   home_index GET    /home/index(.:format)                       {:action=>"index", :controller=>"home"}
             new_user_session GET    /users/sign_in(.:format)                    {:action=>"new", :controller=>"devise/sessions"}
                 user_session POST   /users/sign_in(.:format)                    {:action=>"create", :controller=>"devise/sessions"}
         destroy_user_session GET    /users/sign_out(.:format)                   {:action=>"destroy", :controller=>"devise/sessions"}
                user_password POST   /users/password(.:format)                   {:action=>"create", :controller=>"devise/passwords"}
            new_user_password GET    /users/password/new(.:format)               {:action=>"new", :controller=>"devise/passwords"}
           edit_user_password GET    /users/password/edit(.:format)              {:action=>"edit", :controller=>"devise/passwords"}
                user_password PUT    /users/password(.:format)                   {:action=>"update", :controller=>"devise/passwords"}
     cancel_user_registration GET    /users/cancel(.:format)                     {:action=>"cancel", :controller=>"devise/registrations"}
            user_registration POST   /users(.:format)                            {:action=>"create", :controller=>"devise/registrations"}
        new_user_registration GET    /users/sign_up(.:format)                    {:action=>"new", :controller=>"devise/registrations"}
       edit_user_registration GET    /users/edit(.:format)                       {:action=>"edit", :controller=>"devise/registrations"}
            user_registration PUT    /users(.:format)                            {:action=>"update", :controller=>"devise/registrations"}
            user_registration DELETE /users(.:format)                            {:action=>"destroy", :controller=>"devise/registrations"}
                        users GET    /users(.:format)                            {:action=>"index", :controller=>"users"}
                        users POST   /users(.:format)                            {:action=>"create", :controller=>"users"}
                     new_user GET    /users/new(.:format)                        {:action=>"new", :controller=>"users"}
                    edit_user GET    /users/:id/edit(.:format)                   {:action=>"edit", :controller=>"users"}
                         user GET    /users/:id(.:format)                        {:action=>"show", :controller=>"users"}
                         user PUT    /users/:id(.:format)                        {:action=>"update", :controller=>"users"}
                         user DELETE /users/:id(.:format)                        {:action=>"destroy", :controller=>"users"}
   full_tree_admin_categories GET    /admin/categories/full_tree(.:format)       {:action=>"full_tree", :controller=>"admin/categories"}
             admin_categories GET    /admin/categories(.:format)                 {:action=>"index", :controller=>"admin/categories"}
             admin_categories POST   /admin/categories(.:format)                 {:action=>"create", :controller=>"admin/categories"}
           new_admin_category GET    /admin/categories/new(.:format)             {:action=>"new", :controller=>"admin/categories"}
          edit_admin_category GET    /admin/categories/:id/edit(.:format)        {:action=>"edit", :controller=>"admin/categories"}
               admin_category GET    /admin/categories/:id(.:format)             {:action=>"show", :controller=>"admin/categories"}
               admin_category PUT    /admin/categories/:id(.:format)             {:action=>"update", :controller=>"admin/categories"}
               admin_category DELETE /admin/categories/:id(.:format)             {:action=>"destroy", :controller=>"admin/categories"}
businesses_registration_index GET    /businesses/registration(.:format)          {:action=>"index", :controller=>"businesses/registration"}
businesses_registration_index POST   /businesses/registration(.:format)          {:action=>"create", :controller=>"businesses/registration"}
  new_businesses_registration GET    /businesses/registration/new(.:format)      {:action=>"new", :controller=>"businesses/registration"}
 edit_businesses_registration GET    /businesses/registration/:id/edit(.:format) {:action=>"edit", :controller=>"businesses/registration"}
      businesses_registration GET    /businesses/registration/:id(.:format)      {:action=>"show", :controller=>"businesses/registration"}
      businesses_registration PUT    /businesses/registration/:id(.:format)      {:action=>"update", :controller=>"businesses/registration"}
      businesses_registration DELETE /businesses/registration/:id(.:format)      {:action=>"destroy", :controller=>"businesses/registration"}
                         root        /(.:format)                                 {:action=>"index", :controller=>"home"}

推荐答案

如果您有带名称空间的路由,最好的方法是:

class Admin::BusinessesController < ApplicationController
  def new
    @business = Business.new
  end
end

在路由上.rb:

namespace :admin do
  resources :businesses
end

鉴于:

form_for [:admin, @business] do |f|...

文件:http://guides.rubyonrails.org/form_helpers.html第2.3.1节Dealing with Namespaces

关于你的情况:

在路由上.rb一切正常.在视图中,您应该显式地编写url,因为您在控制器中有变量,而不是控制器名称:

form_for @business, :url => business_registration_path do |f|...

我想在商业/注册控制中,你有这样的东西:

class Businesses::RegistrationController < ApplicationController
  def new
    @business = Business.new
  end
end

还有一句话:我不会创建注册控制器来注册一家新企业.我认为,在business_controller中保留与业务相关的操作要清晰得多.

Ruby-on-rails相关问答推荐

使用turbo流的部分渲染在rails 7中不起作用.

如何控制或定制S为模型使用的命名路由Rail()?

在Ruby on Rails中获取堆栈级别太深错误(&Q)

使用FactoryBot测试ActiveStorage的RSpec请求规范

mini_racer gem 0.8.0无法与Ruby 3.1.xBundle 安装

使用Rails和RSpec,有没有办法查看操作真正将您带到哪个页面?

Rails 7 - has_many_attached 在加载新附件时删除旧附件

ActiveRecord 回调列表

Rails:设计:按角色登录后重定向

如何按值按降序对哈希进行排序并在 ruby​​ 中输出哈希?

如何使用 Ruby 在现有 PDF 上编辑或书写?

Rails Rake 任务 - 访问模型类

如何将 ActionMailer default_url_options 的 :host 动态设置为请求的主机名?

用户注册时设计确认令牌无效

如何覆盖:在 has_many 中定义的顺序

Rails,Docker:主机不存在:默认

错误:无法在 Mavericks 上构建 gem 原生扩展

保存用户偏好的最佳方法?

在 Ruby on Rails 中设置日志(log)记录级别

为什么 Mac OS X 带有 ruby​​/rails?