2012-06-19 105 views
1

我正在嘗試爲包含多個主板的項目創建嵌套路由。Rails中的嵌套路由3.2.3

首先我創建一個鏈接到一個新的董事會:

<%= link_to 'New Board', new_project_board_path(@project) %> 

在routes.rb中我只是嵌套在寧靜的路線:

resources :projects do 
    resources :boards 
end 

而在板控制器我適應新創建動作如下:

def new 
     @project = Project.find(params[:project_id]) 
     @board = @project.boards.new 

     respond_to do |format| 
      format.html # new.html.erb 
      format.json { render json: @board } 
     end 
    end 



def create 
    @project = Project.find(params[:project_id]) 
    @board = @project.boards.new(params[:board]) 

    respond_to do |format| 
     if @board.save 
     format.html { redirect_to @board, notice: 'Board was successfully created.' } 
     format.json { render json: @board, status: :created, location: @board } 
     else 
     format.html { render action: "new" } 
     format.json { render json: @board.errors, status: :unprocessable_entity } 
     end 
    end 
    end 

至少我還將_form.html.erb更改爲:

<%= form_for([@project, @board]) do |f| %> 

當我點擊按鈕,創建板(所以執行新的動作),它說沒有路由匹配我的問題開始。我想它與創建操作有關,因爲它不再獲取項目的ID?我真的不知道還有什麼可以改變的地方。

+0

可以粘貼實際錯誤嗎? – Justin

+0

沒有路由匹配[GET]「/ boards/39」 – cruxi

+0

點擊創建主板後,該網址不合適..在此之前,它有正確的一個我猜測:http:// localhost:3000/projects/5/boards/new – cruxi

回答

1

看來你的錯誤是在這裏

format.html { redirect_to @board, notice: 'Board was successfully created.' } 

你不必非嵌套:板資源,你呢?嘗試將此行更改爲

format.html { redirect_to [@project, @board], notice: 'Board was successfully created.' } 
+0

似乎工作。非常感謝! – cruxi