1

我正在尝试为具有许多板的项目创建嵌套路由。

首先,我正在创建一个指向新版块的链接:

<%= 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?我真的不知道还有什么可以改变的以及在哪里改变。

4

1 回答 1

1

似乎你的错误在这里

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

你没有非嵌套的 :boards 资源,是吗?尝试将此行更改为

format.html { redirect_to [@project, @board], notice: 'Board was successfully created.' }
于 2012-06-19T15:35:44.737 回答