没有路线匹配“/ collections / 1 / photos / new”

有人可以帮我解决这个错误吗?

我刚刚开始了一个基本的Rails项目,我有collections 。 每个系列都可以有多张照片

但是,我可以创建这些集合。 但是,当我想创建附加到Collection的Photo时,我收到此错误:

No route matches [POST] "/collections/1/photos/new" 

的routes.rb

 Rails.application.routes.draw do resources :collections do resources :photos end end 

collection_controller.rb

 class CollectionsController < ApplicationController before_action :set_collection, only: [:show, :edit, :update, :destroy] # GET /collections # GET /collections.json def index @collections = Collection.all end # GET /collections/1 # GET /collections/1.json def show end # GET /collections/new def new @collection = Collection.new end # GET /collections/1/edit def edit end # POST /collections # POST /collections.json def create @collection = Collection.new(collection_params) respond_to do |format| if @collection.save format.html { redirect_to @collection, notice: 'Collection was successfully created.' } format.json { render :show, status: :created, location: @collection } else format.html { render :new } format.json { render json: @collection.errors, status: :unprocessable_entity } end end end # PATCH/PUT /collections/1 # PATCH/PUT /collections/1.json def update respond_to do |format| if @collection.update(collection_params) format.html { redirect_to @collection, notice: 'Collection was successfully updated.' } format.json { render :show, status: :ok, location: @collection } else format.html { render :edit } format.json { render json: @collection.errors, status: :unprocessable_entity } end end end # DELETE /collections/1 # DELETE /collections/1.json def destroy @collection.destroy respond_to do |format| format.html { redirect_to collections_url, notice: 'Collection was successfully destroyed.' } format.json { head :no_content } end end private # Use callbacks to share common setup or constraints between actions. def set_collection @collection = Collection.find(params[:id]) end # Never trust parameters from the scary internet, only allow the white list through. def collection_params params.require(:collection).permit(:name, :description) end end 

photos_controller.rb

 class PhotosController < ApplicationController before_action :set_photo, only: [:show, :edit, :update, :destroy] # GET /photos # GET /photos.json def index @photos = Photo.all end # GET /photos/1 # GET /photos/1.json def show end # GET /photos/new def new @photo = Photo.new end # GET /photos/1/edit def edit end # POST /photos # POST /photos.json def create @photo = Photo.new(photo_params) respond_to do |format| if @photo.save redirect_to @photo format.html { redirect_to @photo, notice: 'Photo was successfully created.' } format.json { render :show, status: :created, location: @photo } else format.html { render :new } format.json { render json: @photo.errors, status: :unprocessable_entity } end end end # PATCH/PUT /photos/1 # PATCH/PUT /photos/1.json def update respond_to do |format| if @photo.update(photo_params) format.html { redirect_to @photo, notice: 'Photo was successfully updated.' } format.json { render :show, status: :ok, location: @photo } else format.html { render :edit } format.json { render json: @photo.errors, status: :unprocessable_entity } end end end # DELETE /photos/1 # DELETE /photos/1.json def destroy @photo.destroy respond_to do |format| format.html { redirect_to photos_url, notice: 'Photo was successfully destroyed.' } format.json { head :no_content } end end private # Use callbacks to share common setup or constraints between actions. def set_photo @photo = Photo.find(params[:id]) end # Never trust parameters from the scary internet, only allow the white list through. def photo_params params.require(:photo).permit(:name, :collection_id) end end 

照片/ new.html.erb

 

New Photo

照片/ _form.html.erb

   

prohibited this photo from being saved:

Naam:

您的表单url错误

new_collection_photo_path

它应该是

collection_photos_path