Rails 3: How to create a new nested resource?

后端 未结 3 825
日久生厌
日久生厌 2020-12-04 06:40

The Getting Started Rails Guide kind of glosses over this part since it doesn\'t implement the \"new\" action of the Comments controller. In my application, I have a book mo

3条回答
  •  感动是毒
    2020-12-04 07:29

    First you have to find the respective book in your chapters controller to build a chapter for him. You can do your actions like this:

    class ChaptersController < ApplicationController
      respond_to :html, :xml, :json
    
      # /books/1/chapters/new
      def new
        @book = Book.find(params[:book_id])
        @chapter = @book.chapters.build
        respond_with(@chapter)
      end
    
      def create
        @book = Book.find(params[:book_id])
        @chapter = @book.chapters.build(params[:chapter])
        if @chapter.save
        ...
        end
      end
    end
    

    In your form, new.html.erb

    form_for(@chapter, :url=>book_chapters_path(@book)) do
       .....rest is the same...
    

    or you can try a shorthand

    form_for([@book,@chapter]) do
        ...same...
    

    Hope this helps.

提交回复
热议问题