我正在阅读“Rails入门教程”,并在更新上卡住了编辑。它在投掷#ArgumentError
#编辑 - 形式的第一个参数不能为零或空。这里是突出显示的行:论坛中的参数错误#编辑 - 第一个参数无
第一个参数不能包含零或为空
提取的源(左右线#1):
<%= form_for @post do |f| %>
看来,当我实施的部分已经开始构成教程的一部分。
这里是post_contoller,编辑分别行动,并_forms.html:
Post_controller:
class PostsController < ApplicationController
def new
@post = Post.new
end
def create
@post = Post.new(params[:post].permit(:title, :text))
if @post.save
redirect_to @post
else
render 'new'
end
end
def show
@post = Post.find(params[:id])
end
def index
@posts = Post.all
end
def update
@post = Post.find(params[:id])
if @post.update(params[:post].permit(:title, :text))
redirect_to @post
else
render 'edit'
end
end
def destroy
@post = Post.find(params[:id])
@post.destroy
redirect_to posts_path
end
private
def post_params
params.require(:post).permit(:title, :text)
end
end
Edit.html
<h1>Edit post</h1>
<%= render 'form' %>
<%= link_to 'Back', posts_path %>
_form.html
<%= form_for @post do |f| %>
<% if @post.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(@post.errors.count, "error") %> prohibited
this post from being saved:</h2>
<ul>
<% @post.errors.full_messages.each do |msg| %>
<li><%= msg %></li>
<% end %>
</ul>
</div>
<% end %>
<p>
<%= f.label :title %><br>
<%= f.text_field :title %>
</p>
<p>
<%= f.label :text %><br>
<%= f.text_area :text %>
</p>
<p>
<%= f.submit %>
</p>
<% end %>
错误显示ID为“7”,这是我试图更新的记录。
所有其他功能工作(显示,新建,删除)和顺便说一句“新”使用相同的部分形式,并正常工作。
任何帮助将不胜感激。谢谢!
您没有'PostsController'中定义的'edit'操作。 – vee
很棒,就是这样。谢谢你的帮助!! – user3457278