Ruby on rails RubyonRails创建新的双嵌套对象
因此,目前我有一个嵌套项目。它从地板=>开关=>插孔开始。通过尝试创建一个新的jack,我已经完成了所有工作。当我在开关显示有一个新的插孔和创建按钮的开放领域。当我输入插孔号码并点击create时,错误就出现了。假设所有其他代码都是正确的(如果您想查看任何其他代码,请告诉我),那么我的jacks控制器中的create方法有什么问题 应用程序/控制器/jacks_controller.rb:Ruby on rails RubyonRails创建新的双嵌套对象,ruby-on-rails,ruby-on-rails-3,Ruby On Rails,Ruby On Rails 3,因此,目前我有一个嵌套项目。它从地板=>开关=>插孔开始。通过尝试创建一个新的jack,我已经完成了所有工作。当我在开关显示有一个新的插孔和创建按钮的开放领域。当我输入插孔号码并点击create时,错误就出现了。假设所有其他代码都是正确的(如果您想查看任何其他代码,请告诉我),那么我的jacks控制器中的create方法有什么问题 应用程序/控制器/jacks_controller.rb: ... def create @floor = Floor.find(params[:fl
...
def create
@floor = Floor.find(params[:floor_id])
@switch = @floor.switches.find(params[:switch_id])
@jack = @switch.jacks.create(params[:jack])
redirect_to(@switch)
end
...
它给我的错误是“没有路由匹配[POST]”/floors/1/switches/1“”。这对我来说也没有意义,因为这是我正在添加插孔的当前交换机的确切URL
提前感谢任何能解释我做错了什么或误解的人
编辑:
以下是我的rake路线:
floor_switch_jacks GET /floors/:floor_id/switches/:switch_id/jacks(.:format) jacks#index
POST /floors/:floor_id/switches/:switch_id/jacks(.:format) jacks#create
new_floor_switch_jack GET /floors/:floor_id/switches/:switch_id/jacks/new(.:format) jacks#new
edit_floor_switch_jack GET /floors/:floor_id/switches/:switch_id/jacks/:id/edit(.:format) jacks#edit
floor_switch_jack GET /floors/:floor_id/switches/:switch_id/jacks/:id(.:format) jacks#show
PUT /floors/:floor_id/switches/:switch_id/jacks/:id(.:format) jacks#update
DELETE /floors/:floor_id/switches/:switch_id/jacks/:id(.:format) jacks#destroy
floor_switches GET /floors/:floor_id/switches(.:format) switches#index
POST /floors/:floor_id/switches(.:format) switches#create
new_floor_switch GET /floors/:floor_id/switches/new(.:format) switches#new
edit_floor_switch GET /floors/:floor_id/switches/:id/edit(.:format) switches#edit
floor_switch GET /floors/:floor_id/switches/:id(.:format) switches#show
PUT /floors/:floor_id/switches/:id(.:format) switches#update
DELETE /floors/:floor_id/switches/:id(.:format) switches#destroy
floors GET /floors(.:format) floors#index
POST /floors(.:format) floors#create
new_floor GET /floors/new(.:format) floors#new
edit_floor GET /floors/:id/edit(.:format) floors#edit
floor GET /floors/:id(.:format) floors#show
PUT /floors/:id(.:format) floors#update
DELETE /floors/:id(.:format) floors#destroy
home_index GET /home/index(.:format) home#index
root / home#index
这对routes.rb有好处吗?否则,我的routes.rb是非常基本的,一点也没有触及它。如果这就是我的问题所在,你能帮我吗?或者送我去一个不涉及routes.rb部分的教程
编辑:
我修好了。问题出在我的jacks/_form.html.erb中的form for line中。正确的语法是:
<%= form_for [@floor, @switch, @switch.jacks.new] do |f| %>
感谢所有试图帮助的人,我们非常感激 我遇到了类似的情况,通过将我的
redirect\u改为语句解决了这个问题。试着这样做:
redirect_to [@floor, @switch]
当时我还记得错误消息并没有帮到我,事实上它把我从线索中抛了出去
你所有的路线都是从/floor
开始的,但我相信
redirect_to @switch
将尝试解析为您尚未定义的/switch
路径。我遇到了类似的情况,通过将重定向\u更改为语句解决了此问题。试着这样做:
redirect_to [@floor, @switch]
当时我还记得错误消息并没有帮到我,事实上它把我从线索中抛了出去
你所有的路线都是从/floor
开始的,但我相信
redirect_to @switch
将尝试解析为您尚未定义的/switch
路径。能否发布routes.rb文件的相关部分?如果你可以浏览到/floors/1/switches/1,但不能在那里发布,那听起来像是路由问题。我编辑了主要帖子。让我知道,谢谢你的帮助!嗯,我没有看到任何看起来像POST/floors/:floor\u id/switches/:id
的路由,这就是错误所说的不存在的。这是有道理的。我试图像使用交换机一样使用插孔,但它与我当前的路由配置不一样。有什么方法可以添加该路线或使用现有路线添加新插孔?您可以发布routes.rb文件的相关部分吗?如果你可以浏览到/floors/1/switches/1,但不能在那里发布,那听起来像是路由问题。我编辑了主要帖子。让我知道,谢谢你的帮助!嗯,我没有看到任何看起来像POST/floors/:floor\u id/switches/:id
的路由,这就是错误所说的不存在的。这是有道理的。我试图像使用交换机一样使用插孔,但它与我当前的路由配置不一样。是否有任何方法可以添加该路线或使用现有路线添加新插孔?是否有效?如果这个答案解决了您的问题,那么如果您将它标记为已接受,它将帮助其他可能遇到类似问题的人。抱歉,我从星期四就走了,没有太多时间做这件事。不,它不起作用,我仍然有同样的问题。我尝试了新的重定向到,但仍然得到:没有路由匹配[POST]“/floors/1/switches/1”我成功了!相信我,我之前确实搜索过,但现在我做了一个类似的情况,我修复了它。我将编辑主帖子以获取信息。这有用吗?如果这个答案解决了您的问题,那么如果您将它标记为已接受,它将帮助其他可能遇到类似问题的人。抱歉,我从星期四就走了,没有太多时间做这件事。不,它不起作用,我仍然有同样的问题。我尝试了新的重定向到,但仍然得到:没有路由匹配[POST]“/floors/1/switches/1”我成功了!相信我,我之前确实搜索过,但现在我做了一个类似的情况,我修复了它。我将编辑主要帖子以获取信息。