繁体   English   中英

Ruby on Rails创建一个新的双嵌套对象

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM