簡體   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