[英]Ruby on Rails creating a new doubly nested object
所以目前我有一个嵌套项目。 它以Floors => switchs => jacks开头。 通过尝试创建新的插孔,我完成了所有工作。 当我进入切换秀时,会有一个用于新插孔和创建按钮的开放字段。 当我输入插孔编号并点击创建时,就会出现错误。 假设所有其他代码正确(让我知道是否要查看其他代码),那么jacks控制器中的create方法有什么问题?
apps / controllers / jacks_controller.rb:
...
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。
在此先感谢任何可以解释我在做错或误解的人!
编辑:
这是我的耙路:
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 [@floor, @switch, @switch.jacks.new] do |f| %>
感谢任何尝试提供帮助的人,不胜感激!
我遇到了类似的情况,并通过更改redirect_to
语句解决了该问题。 尝试这样的事情:
redirect_to [@floor, @switch]
当时我还记得错误消息并没有帮助我,实际上是使我偏离了轨道。
您所有的路线都以/floor
开头,但我相信
redirect_to @switch
将尝试解析为您尚未定义的/switch
路径。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.