1

多くのボードがあるプロジェクトのネストされたルートを作成しようとしています。

まず、新しいボードへのリンクを作成しています。

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

ルート.rbで、RESTfulルートをネストしました。

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 に答える