gpt4 book ai didi

ruby - 为什么 form_for 对命名空间 Controller 使用不正确的 REST url_helpers?

转载 作者:太空宇宙 更新时间:2023-11-03 18:29:49 25 4
gpt4 key购买 nike

在我的 Rails 应用程序中有一个部分包含在新操作和编辑操作之间共享的表单:

<%= form_for @customer do |f| %>

....

<% end %>

这些操作是 Controller (称为customers)命名空间(称为admin)的,如果尝试运行代码,则在执行 form_for 时显示错误:

undefined method `customer_path'

使用以下方法解决了这个问题:

<%= form_for :customer, @customer do |f| %>

....

<% end %>

现在当被new 操作调用时,表单会生成正确的 url 但当被edit 生成时,表单 url 是“/admin/customers/1/编辑”而不是更新。如果提交表单显示错误:

No route matches "/admin/customers/1/edit"

但在 routes.rb 中有:

namespace :admin do

resources :customers

end

和 rake:routes 显示所有 REST urls:

admin_customers GET /admin/customers(.:format) {:action=>"index", :controller=>"admin/customers"} POST /admin/customers(.:format) {:action=>"create", :controller=>"admin/customers"} new_admin_customer GET /admin/customers/new(.:format) {:action=>"new", :controller=>"admin/customers"} edit_admin_customer GET/admin/customers/:id/edit(.:format){:action=>"edit",:controller=>"admin/customers"} admin_customer GET /admin/customers/:id(.:format) {:action=>"show",:controller=>"admin/customers"} PUT /admin/customers/:id(.:format) {:action=>"update", :controller=>"admin/customers"} DELETE /admin/customers/:id(.:format) {:action=>"destroy",:controller=>"admin/customers"}

有什么想法吗?

最佳答案

试试这个

<%= form_for [:admin, @customer] do |f| %>

关于ruby - 为什么 form_for 对命名空间 Controller 使用不正确的 REST url_helpers?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5927574/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com