我正在try 路由和命名空间.
当使用<%= form_with model: [@user, @address] do |form| %>
的表单实现时
我收到这个错误undefined method 'customer_user_customer_addresses_path'
这是路由架构
namespace :customer do
resources :users do
resource :contact
resources :addresses
end
end
resolve('Customer::Contact') {
[:customer, :user, :contact]
}
rails routes
命令打印的所有路由都符合预期.
customer_user_addresses GET /customer/users/:user_id/addresses(.:format) customer/addresses#index
POST /customer/users/:user_id/addresses(.:format) customer/addresses#create
new_customer_user_address GET /customer/users/:user_id/addresses/new(.:format) customer/addresses#new
edit_customer_user_address GET /customer/users/:user_id/addresses/:id/edit(.:format) customer/addresses#edit
customer_user_address GET /customer/users/:user_id/addresses/:id(.:format) customer/addresses#show
PATCH /customer/users/:user_id/addresses/:id(.:format) customer/addresses#update
PUT /customer/users/:user_id/addresses/:id(.:format) customer/addresses#update
DELETE /customer/users/:user_id/addresses/:id(.:format) customer/addresses#destroy
This is what i was able to do
- 通过创建
Customer::UsersController
,我能够访问用户资源的所有crud操作, - 通过创建
Customer::ContactsController
,我能够访问所有crud操作,但我不得不添加resolve指令,以使路由生成正确
resolve('Customer::Contact') {
[:customer, :user, :contact]
}
This is where i'm in trouble
当实现Customer::AddressesController
时,我无法找到一种方法来使form_请求正确的路径.
这是控制器的动作
def new
@breadcrumbs = []
@user = Customer::User.find(params[:user_id])
@address = @user.addresses.build
end
这是新模板
<%= form_with model: [@user, @address] do |form| %>
当我导航到新操作时,我得到了这个错误undefined method 'customer_user_customer_addresses_path'
.
为了使它工作,我必须传递一个正确的路径:<%= form_with model: [@user, @address], url: customer_user_addresses_path(@user) do |form| %>
.
我错过了什么约定?有什么方法可以忽略URL参数?
Info
存储库:https://github.com/LuigiDeCosmis/GestionaleTest个
要判断的模板位于customers/addresses/new. html. erb下