我一直坚持这个问题已经有一段时间了,并且在解决方案之后搜索了解决方案,到目前为止,我遇到的问题都没有用。
我为我的应用程序为一个新的Object创建了一个新的rails scaffold,我已经设置了表,我可以在运行服务器时查看Post对象。
当我的服务器运行时我去查看Post对象的问题,它的内容没有显示,我无法更新这个错误被抛出的对象:
param is missing or the value is empty: post
数据库中的Posts table
如下所示:
正如您所看到的,当我去查看帖子时,字段content
包含我想要在我的页面上显示的数据。
这就是出现的结果:
what i see when running the server
如您所见,它不会显示content
字段的内容。
这是我的posts_controller.rb
class PostsController < ApplicationController
# you may want to udpate these posts? typo's outdated info?
before_action :set_post, only: [:show, :edit, :update, :destroy]
# GET /posts
# GET /posts.json
def index
@posts = Post.all
end
# GET /posts/1
# GET /posts/1.json
def show
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: 'Post was successfully created.' }
format.json { render action: 'show', status: :created, location: @post }
else
format.html { render action: '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: 'Post was successfully updated.' }
format.json { head :no_content }
else
format.html { render action: '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 }
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(:content)
end
end
我认为这可以让我看到content
def post_params
params.require(:post).permit(:content)
end
我认为这是因:post
before_action :set_post, only: [:show, :edit, :update, :destroy]
的原因
def set_post
@post = Post.find(params[:id])
end
这是rails中错误页面上显示的内容:
{"utf8"=>"✓",
"_method"=>"patch",
"authenticity_token"=>"tHFQAWv08aUoi7ndZsVC1aCNJkYP6hE8w+89NTTpBjc=",
"commit"=>"Update Post",
"id"=>"2"}
我真的很困惑为什么会发生这种情况,我对rails很新,所以毫无疑问我错过了一些基本的东西。
谢谢, 克里斯。
答案 0 :(得分:0)
您的请求缺少post
参数:
{"utf8"=>"✓",
"_method"=>"patch",
"authenticity_token"=>"tHFQAWv08aUoi7ndZsVC1aCNJkYP6hE8w+89NTTpBjc=",
"commit"=>"Update Post",
"id"=>"2"}
这很可能是由于app/views/posts/edit.html.erb
视图中的表单错误造成的。表单应如下所示:
<%= form_for @post, url: {action: "edit"} do |f| %>
<%= f.text_area :content %>
<%= end %>
您可以在rails guides中了解有关表单的更多信息。