ruby-on-rails - 创建和更新不再起作用。有什么建议么?或者原因是什么?
问题描述
我正在尝试构建一个简单的博客类型应用程序来学习 ruby on rails。创建以前可以工作,但是添加编辑/更新功能后,创建和编辑都不起作用。我不确定我做错了什么。Edit 不会使用新数据进行更新,并且 Create 不再接受新数据。例如:无论写什么,创建一个新帖子都会导致一个空白帖子,并且在向旧帖子添加新文本时,点击提交后不会更改帖子。
我的控制器:
def create
@post = Post.create(post_params)
if @post.save(post_params)
redirect_to @post
else
render 'new'
end
end
def show
@post = Post.find(post_params[:id])
end
def update
@post = Post.find(params[:id])
if @post.update_attributes(post_params)
redirect_to @post
else
render 'edit'
end
end
def edit
@post = Post.find(params[:id])
end
def post_params
params.permit(:title, :detail)
end
编辑和创建 html 文件都会呈现一个表单页面:
<div class="section">
<%= simple_form_for @post do |f| %>
<%= f.input :title %>
<%= f.input :detail %>
<%= f.button :submit %>
<% end %>
</div>
解决方案
def create
@post = Post.new(post_params) # use Post.new, don't create already
if @post.save # if above Post is saved then redirect
redirect_to @post
else
render 'new'
end
end
def show
@post = Post.find(params[:id]) #use params[:id], not post_params[:id]
end
def update
@post = Post.find(params[:id]) #use params[:id] to find the post
if @post.update_attributes(post_params) #use post_params for attributes
redirect_to @post
else
render 'edit'
end
end
def edit
@post = Post.find(params[:id]) #use params[:id] to find post
end
private
def post_params
params.require(:post).permit(:title, :detail)
# Don't permit the ID as you don't want to change the ID.
end
推荐阅读
- java - 在 Spark Structured Streaming 中遇到问题
- docusignapi - API(签名数),返回签名文档,签名位置
- c++ - 如何从 C++ 文件中读取用逗号分隔的全名?
- c - 将多个客户端 fifo 连接到一个服务器 fifo
- jfreechart - 如何在 JFreeChart 散点图中创建空心形状
- c# - DDD 使用事件还是服务?
- linux - 结合两个find命令linux的结果
- javascript - 错误类型错误:“jit_nodeValue_3(...).toggle 不是函数”
- knockout.js - 在敲除可观察数组中搜索项目不区分大小写
- php - 如何自定义批发价格 woocommerce 的角色