Пожалуйста, просмотрите проблемы ниже: Rails создал пост - PullRequest
0 голосов
/ 26 августа 2018

Я не знаю почему, но когда я пытаюсь создать сообщение, я получаю эту ошибку. Я создал эшафот "пост" Затем я хотел получить свои сообщения в другом контроллере, в моем доме контроллеров.

Я добавляю "own_to: home" в мой Post.rb

На этом этапе все в порядке. Но когда я пытаюсь создать сообщение, я получаю это «Пожалуйста, рассмотрите проблемы ниже:»

Обработка PostsController # создать в HTML Параметры: { "utf8" => "✓", "authenticity_token" => "0QgNSnhZWnsa + U9iYi1RB2Yk + qoW1be0Mj / o3579Es74oKBD452HQxZF144KBhR + in7UaSf9OLpzAyn8aJrB6A ==", "сообщение" => { "title" => "sfsf", "content" => "sdfsfsfs", "author" => "sdfsfsdf"}, "commit" => «Создать сообщение»} (0.4ms) BEGIN (0.3ms) ROLLBACK Рендеринг сообщений /new.html.erb в макетах / приложении Отображается posts / new.html.erb в макетах / приложении (14,6 мс). Пользовательская нагрузка (0,7 мс) SELECT users. ОТ users ГДЕ users. id = 2 ЗАКАЗАТЬ ПО users. id ASC LIMIT 1 Рендеринг макетов / _header.html.erb (6,8 мс) Рендеринг макетов / _footer.html.erb (0,9 мс) Выполнено 200 ОК за 1512 мс (Просмотров: 381,2 мс | ActiveRecord: 1,4 мс) *

post_controller.rb

class PostsController < ApplicationController
  before_action :set_post, only: [:show, :edit, :update, :destroy]

  # GET /posts
  # GET /posts.json
  def index
    @posts = Post.all.order("created_at DESC")
  end

  # GET /posts/1
  # GET /posts/1.json
  def show
    @posts
  end

  # GET /posts/new
  def new
    @post = Post.new
  end

  # GET /posts/1/edit
  def edit
  end

  # POST /posts
  # POST /posts.json
  def create
    @post = Post.new(post_params)
    respond_to do |format|
      if @post.save
        format.html {redirect_to @post, notice: 'Article crée.'}
        format.json {render :show, status: :created, location: @post}
      else
        format.html {render :new}
        format.json {render json: @post.errors, status: :unprocessable_entity}
      end
    end
  end

  # PATCH/PUT /posts/1
  # PATCH/PUT /posts/1.json
  def update
    respond_to do |format|
      if @post.update(post_params)
        format.html {redirect_to @post, notice: 'Article édité.'}
        format.json {render :show, status: :ok, location: @post}
      else
        format.html {render :edit}
        format.json {render json: @post.errors, status: :unprocessable_entity}
      end
    end
  end

  # DELETE /posts/1
  # DELETE /posts/1.json
  def destroy
    @post.destroy
    respond_to do |format|
      format.html {redirect_to posts_url, notice: 'Article supprimé.'}
      format.json {head :no_content}
    end
  end

  private

  # Use callbacks to share common setup or constraints between actions.
  def set_post
    @post = Post.find(params[:id])
  end

  # Never trust parameters from the scary internet, only allow the white list through.
  def post_params
    params.require(:post).permit(:title, :content, :author)
  end
end

сообщение / new.html.erb

<div class="container left-box">
  <h1 class="left-box-title">Ajouter un article</h1>

  <%= simple_form_for @post, wrapper: :vertical_form do |f| %>
    <%= f.error_notification %>
    <%= f.input :title, label: 'Titre' %>
    <p>Contenu</p>
    <%= f.text_area :content, class: 'col-md-12 form-control content_post_create' %>
    <%= f.input :author, label: 'Auteur' %>
    <%= f.button :submit, class: "btn-primary", label: 'Mettre en ligne' %>
    <%= f.button :button, "Recommencer", type: "reset", class: "btn-outline-secondary" %>
  <% end %>

  <%= link_to "Retour à l'accueil", posts_path %>
</div>

1 Ответ

0 голосов
/ 26 августа 2018

Ваша ошибка исходит от belongs_to :home в Post.rb:

Ассоциация own_to создает однозначное совпадение с другой моделью.В терминах базы данных эта ассоциация говорит, что этот класс содержит внешний ключ.( source )

Если вы добавите полный текст сообщения об ошибке в вашей форме, например:

<%= simple_form_for @post, wrapper: :vertical_form do |f| %>
  <ul>
    <% @post.errors.full_messages.each do |message| %>
    <li><%= message %></li>
    <% end %>
  </ul>
  ...
<% end %>

, вы должны увидеть эту ошибку: Home must exist

Чтобы устранить проблему, вы можете удалить ассоциацию belongs_to или, если Home действительно модель, добавить home_id к @post в действии создания перед сохранением.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...