Ruby on rails rails:创建到DB后,地址栏中的重定向正确,但URL不正确

Ruby on rails rails:创建到DB后,地址栏中的重定向正确,但URL不正确,ruby-on-rails,ruby,ruby-on-rails-3,Ruby On Rails,Ruby,Ruby On Rails 3,在我的rails应用程序中,我有一个创建按钮 def create @client = Client.find(params[:client_id]) @inventory = @client.inventories.create(params[:inventory]) redirect_to client_path(@client) end 当创建清单时(作为客户端的一部分,例如客户端有许多清单,清单属于客户端),清单将添加到数据库中的客户端,

在我的rails应用程序中,我有一个创建按钮

   def create
      @client = Client.find(params[:client_id])
      @inventory = @client.inventories.create(params[:inventory])
      redirect_to client_path(@client)
   end
当创建清单时(作为客户端的一部分,例如客户端有许多清单,清单属于客户端),清单将添加到数据库中的客户端,并重定向到localhost:3000/client/(无论客户端ID是什么)

但是,我的程序有一个问题,因为尽管它执行了正确的重定向,但在我推式创建之后,地址栏中的地址是localhost:3000/client/1/inventory/1。。。我只希望它是localhost:3000/client/1/。如果我真的尝试访问localhost:3000/client/1/inventory/1,它会给我一个错误,因为我没有显示清单

它如何可能进行正确的重定向,但在我的浏览器中显示了错误的URL?顺便说一下,这在我的routes.rb中,对我来说似乎不是问题

 resources :clients do
    resources :inventories
 end
为什么我的应用程序会这样运行?有人吗?:]

编辑

当我输入rake路由时,我看到了这一点。 创造和毁灭的路线似乎是错误的。如何更改它们?

在这种情况下,请使用:

redirect_to client_path(@client.id)

解决此问题的一个方法是向库存控制器添加

 def index
     @client = Client.find(params[:client_id])
     redirect_to client_path(@client)
 end

看起来这是处理返回按钮点击这些错误的最佳方式,似乎您无法控制地址栏中显示的地址。至少我们不知道如何P

此解决方案对我不起作用,它的作用相同。我不相信错误在这一行,因为我可以重定向到任何东西,它仍然会转到/client/#/inventory。它被重定向到正确的页面,只是显示错误。它确实加载/client/#。但是地址栏上写着/client/#/inventory。当按下下一页上的“后退”按钮时会出现问题,这会导致错误页面。未知操作找不到InventoriesController的操作“索引”。那么重定向发生在哪里?您可以发布服务器日志吗?重定向似乎发生在正确的位置,即client_path(@client.id)[localhost:3000/clients/id#/],但地址栏中的地址显示为[localhost:3000/clients/id#/inventory],尽管该站点不是浏览器呈现的站点。如果我呈现[localhost:3000/clients/id#/inventory],它会给出错误页面。(未知操作blabla)。这是服务器日志的屏幕截图,您是否有任何可能会出错的before_过滤器?另外,尝试rake-routes命令,看看是否有任何意外情况发生……看起来我的rake-routes确实发生了一些不需要的事情,但我不知道如何修复它。这是我认为看起来不对的部分的截图。创建之后,我希望它转到/clients/client\u id/而不是它所说的/clients/client\u id/inventory。destroy也是一样,我希望它转到/clients/:clientid/而不是屏幕快照中的内容我看不出rake routes输出有任何问题,您认为rake routes输出中的问题在哪里?地址栏中的URL在创建资源清册时显示/clients/:client\u id/inventory是一个问题,因为它应该转到/clients/:client_id。我特别要说的是库存创建和库存销毁的路径。我相信这就是控制地址栏在创建后显示/clients/client\u id/inventory的原因,尽管重定向到client\u路径。