Ruby on rails 请检查以下问题:Rails创建的帖子

Ruby on rails 请检查以下问题:Rails创建的帖子,ruby-on-rails,ruby,Ruby On Rails,Ruby,我不知道为什么,但当我试图创建帖子时,我遇到了这个错误。 我创造了一个脚手架柱 然后我想在一个不同的控制器中获得我的帖子,在我的控制器主页中 我在我的Post.rb中放置了属于:home 在这一步中,一切都很好。 但当我尝试创建帖子时,我得到了以下信息,请检查以下问题: PostsControllercreate作为HTML参数处理:{utf8=>✓, 真实性令牌=>0QgNSnhZWnsa+U9iYi1RB2Yk+qoW1be0Mj/o3579Es74oKBD452HQxZF144KBhR+i

我不知道为什么,但当我试图创建帖子时,我遇到了这个错误。 我创造了一个脚手架柱 然后我想在一个不同的控制器中获得我的帖子,在我的控制器主页中

我在我的Post.rb中放置了属于:home

在这一步中,一切都很好。 但当我尝试创建帖子时,我得到了以下信息,请检查以下问题:

PostsControllercreate作为HTML参数处理:{utf8=>✓, 真实性令牌=>0QgNSnhZWnsa+U9iYi1RB2Yk+qoW1be0Mj/o3579Es74oKBD452HQxZF144KBhR+in7UaSf9OLpzAyn8aJrB6A==,post=>{title=>sfsf,content=>SDFSFS,author=>SDFSDF},commit=>Create post}0.4ms开始0.3ms回滚布局内呈现帖子/new.html.erb/布局内应用程序呈现帖子/new.html.erb/应用程序14.6ms用户加载0.7ms选择用户。来自用户,其中users.id=2 ORDER BY users.id ASC LIMIT 1呈现布局/_header.html.erb 6.8ms呈现布局/_footer.html.erb 0.9ms在1512ms视图中完成了200次OK:381.2ms |活动记录:1.4ms*

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
post/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>
您的错误来自Post.rb中的归属:home:

“属于”关联创建与另一个关联的一对一匹配 模型在数据库术语中,该关联表示该类 包含外键

如果在表单中添加错误完整消息,如下所示:

<%= simple_form_for @post, wrapper: :vertical_form do |f| %>
  <ul>
    <% @post.errors.full_messages.each do |message| %>
    <li><%= message %></li>
    <% end %>
  </ul>
  ...
<% end %>
您应该看到这个错误:Home必须存在


要解决您的问题,您可以删除“属于”关联,或者,如果Home确实是一个模型,请在保存前在创建操作中将Home id添加到@post。

控制台日志中没有指定错误。你能试试救命吗!而不是在创建操作中保存?自救!将返回更具体的错误消息。在控制器中使用具有不同名称的模型时,不需要关联。我真的不明白你是怎么得出这个结论的。