2014-01-23 120 views
1

我有以下途徑:軌道4嵌套的資源錯誤創建操作創建

resources :venues, shallow: true do 
     #Halls 
     get "hall/:id/exhibition" => "halls#exhibition", as: :exhibition 
     get "hall/:id/visit" => "halls#visit", as: :hall_visit 
     get "structure", :to => "venues#venue_structure" 
     resources :asset_types, :booths_tags, :tags, :uploaded_files, :events, :chats 
     resources :halls do 
      resources :webcasts 
      resources :booths do 
       resources :chats 
      end 
     end 
    end 

創建行動:

# POST /halls 
    def create 
    @hall = Hall.new(hall_params) 

    if @hall.save 
     redirect_to @hall, notice: 'Hall was successfully created.' 
    else 
     render action: 'new' 
    end 
    end 

但現在我得到以下錯誤的:

undefined method `halls_path' for #<#<Class:0xb0c7300>:0xab9e7c0> 

有沒有辦法使這個render action: 'new'部分工作與重定向回形成驗證和錯誤消息?

耙路線

venue_halls_path  GET  /venues/:venue_id/halls(.:format) halls#index 
        POST /venues/:venue_id/halls(.:format) halls#create 
new_venue_hall_path GET  /venues/:venue_id/halls/new(.:format) halls#new 
edit_hall_path  GET  /halls/:id/edit(.:format) halls#edit 
hall_path   GET  /halls/:id(.:format) halls#show 
        PATCH /halls/:id(.:format) halls#update 
        PUT  /halls/:id(.:format) halls#update 
        DELETE /halls/:id(.:format) halls#destroy 
+0

你嘗試''耙路線| grep halls''看看它是怎麼回事? –

+0

我剛剛更新了我的回答 –

+0

您在過去7天中詢問了11條ruby-on-rails問題 - 請在提問前閱讀官方文檔 – emaillenin

回答

2

當你在這樣的Rails巢的事情,當你想要去那個對象,你不能只是重定向到該對象。您還必須包含:venue

@venue = params[:venue] #or however you can get the venue 
redirect_to [@venue, @hall], notice: 'Hall was successfully created.' 

請注意,由於嵌套方式,您的對象路徑現在是一個數組。

試試...讓我知道它是如何爲你工作的。

也...閱讀 - http://guides.rubyonrails.org/routing.html#nested-resources - 讀了整個事情,但是這部分的嵌套

+0

非常感謝。 'format.html {render action:'new'}'這個部分呢?我爲這部分錯誤產生了'create'行動 –

+0

這是一個不同的問題,methinks。你也說得太多了。所有你需要說的是'渲染'大廳/新''。這將提供適當的觀點來處理重新提交表格。訣竅是,你的'halls/new'視圖將會尋找某個'@ instanceVariables'。您需要確保這些變量可以從您的創建操作中獲得。 – Dudo

+0

我試過這個'渲染動作:'場地/#{venue.id}/events/new'',但是這似乎重定向到'場地/#{venue.id}/events'並且缺少模板錯誤 –