2016-12-30 9 views
-1

Я построил приложение Rails, которое пыталось установить в , включая несколько вложений для скрепки. При нажатии на кнопку отправки в /коллекции/новый Это дает мне ошибку: нет маршрута матчей [POST] «/ сбор/новый» Вот мой кодНет совпадений в маршруте [POST] "/ collection/new"

new.html.erb

<%= form_for @collection, url: new_collection_path, :html => { multipart: true } do |f| %> 
<%= f.label :name %> 
<%= f.text_field :name %> 
</br> 
<%= f.label :beschreibung %> 
<%= f.text_field :description %> 
</br> 
<%= file_field_tag "images[]", type: :file, multiple: true %> 
<%= f.submit %> 
<% end %> 

collection_controller.rb

class CollectionController < ApplicationController 

def index 
end 
def new 
    @collection = Collection.new 
end 

def create 
    @collection = Collection.new(collection_params) 
    if @collection.save 
     if params[:images] 
      params[:images].each { |image| 
       @collection.pictures.create(image: image) 
      } 
     end 
     redirect_to @collection 
     else 
     render action "new" 
    end 
end 

def show 
    @collection = Collection.find(params[:id]) 
end 
private  
def collection_params 
    params.require(:collection).permit(:name, :description, :photos) 
end 

end 

routes.rb

Rails.application.routes.draw do 
root 'page#index' 
resources :collection 
end 

И, наконец, мои маршруты

  Prefix Verb URI Pattern     Controller#Action 
      root GET /       page#index 
collection_index GET /collection(.:format)   collection#index 
       POST /collection(.:format)   collection#create 
    new_collection GET /collection/new(.:format)  collection#new 
edit_collection GET /collection/:id/edit(.:format) collection#edit 
     collection GET /collection/:id(.:format)  collection#show 
       PATCH /collection/:id(.:format)  collection#update 
       PUT /collection/:id(.:format)  collection#update 
       DELETE /collection/:id(.:format)  collection#destroy 

ответ

1

Вы, предполагают, чтобы получить возможность отправлять данные в действие "создать", а не "новое" действие "новое" действие обычно возвращает форму для создания записей. Таким образом, измените строку:

<%= form_for :@collection, url: new_collection_path, :html => { multipart: true } do |f| %> 

к:

<%= form_for @collection,:html => { multipart: true } do |f| %> 

должна работать.

+0

Когда я иду в/collection/new, я даю мне еще одну ошибку ** неопределенный метод 'collections_path 'для # <# <Класс: 0x82b76d94>: 0x83e23c6c> ** – McPlum

Смежные вопросы