Я не могу сохранить почту. Маршрут не соответствует [POST] / posts / new

Надеюсь, что этих файлов хватит для решения проблемы. Все работает, я просто не могу сохранить пост.

маршруты:

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

post_controller:

class PostsController < ApplicationController

  def index
    @posts = Post.all
  end

  def show
    @post = Post.find(params[:id])
  end

  def new
    @post = Post.new
  end

  def create
    @post = Post.new(post_params)
    if @post.save
      flash[:notice] = "Successfully created post!"
      redirect_to post_path(@post)
    else
      flash[:alert] = "Error creating new post!"
      render :new
    end
  end

  private

  def post_params
    params.require(:post).permit(:author, :title, :summary, :body)
  end

end

person Артем Неймышев    schedule 09.03.2017    source источник
comment
Отправьте, пожалуйста, вывод из рейк-маршрутов   -  person David    schedule 09.03.2017
comment
new должен использоваться для get запросов, а не сообщений (запрос POST).   -  person fanta    schedule 09.03.2017
comment
Prefix Verb URI Pattern Controller # Action root GET / posts # index posts GET /posts(.:format) posts # index POST /posts(.:format) posts # create new_post GET /posts/new(.:format) posts # new edit_post GET /posts/:id/edit(.:format) posts # редактировать сообщение GET /posts/:id(.:format) posts # показать   -  person Артем Неймышев    schedule 09.03.2017


Ответы (2)


Убедитесь, что код вашей формы публикации начинается так:

<%= form_for(@post) do |f| %>
person Tomasz Bubała    schedule 09.03.2017
comment
‹% = Form_for: post do | f | % › - person Артем Неймышев; 09.03.2017
comment
измените его на ‹% = form_for (@post) do | f | % ›И посмотрите, что произойдет. Помощники форм принимают имя переменной экземпляра - здесь @post в качестве параметра. Подробнее о помощниках форм здесь: guides .rubyonrails.org / form_helpers.html - person Tomasz Bubała; 09.03.2017
comment
ахахашах я не знаю как - person Артем Неймышев; 10.03.2017

Вы делаете «GET» для сообщения № new и «POST» для сообщения № create. Новое действие предназначено для возврата формы, необходимой для «POST», для действия create. Вы не отправляете сообщения в новое действие.

person Alexander Luna    schedule 09.03.2017
comment
Я новичок в ROR. Как я могу это исправить? - person Артем Неймышев; 09.03.2017
comment
Как вы собираетесь на свой пост новый? У вас должна быть ссылка, которая выглядит так: new_post_path - person Alexander Luna; 09.03.2017
comment
У меня он есть в index.html.erb - person Артем Неймышев; 09.03.2017
comment
‹% = Link_to 'Новое сообщение', new_post_path%› - person Артем Неймышев; 09.03.2017
comment
Добавьте выходные данные о ваших рейк-маршрутах. Вы перезапустили свой сервер? Также опубликуйте форму в вашем файле new.html - person Alexander Luna; 09.03.2017
comment
Да перезагружаю сервер. Да форма в new.html.erb. - person Артем Неймышев; 09.03.2017
comment
Prefix Verb URI Pattern Controller # Action root GET / posts # index posts GET /posts(.:format) posts # index POST /posts(.:format) posts # create new_post GET /posts/new(.:format) posts # new edit_post GET /posts/:id/edit(.:format) posts # редактировать сообщение GET /posts/:id(.:format) posts # показать PATCH /posts/:id(.:format) posts # обновить PUT / posts / : id (.: format) posts # обновить УДАЛИТЬ /posts/:id(.:format) posts # уничтожить - person Артем Неймышев; 09.03.2017
comment
Пожалуйста, разместите форму в вашем new.html. Думаю, проблема в этом. Ваши маршруты выглядят хорошо. - person Alexander Luna; 09.03.2017
comment
‹H1› Новое сообщение ‹/h1› ‹% = form_for: post do | f | % ›‹P›‹% = f.label: author% ›‹br›‹% = f.text_field: author% ›‹/p› ‹p›‹% = f.label: title% ›‹br›‹% = f.text_field: title% ›‹/p› ‹p›‹% = f.label: summary% ›‹br›‹% = f.text_area: summary% ›‹/p› ‹p›‹% = f. label: body% ›‹br›‹% = f.text_area: body% ›‹/p› ‹p›‹% = f.submit% ›‹/p›‹% end% › - person Артем Неймышев; 09.03.2017
comment
Измените форму на: form_for @post do | f |. - person Alexander Luna; 10.03.2017