有一个疑问, 难到要def show后才能进行edit以及update的定义, 最后才能work咩? 带着疑问尝试吧.
在posts的controller里面写edit定义, 是参照def create的内容写成
def edit
@group = Group.find(params[:group_id])
@post = Post.new(post_params)
end
这样就开始报错
改成如下
def edit
@group = Group.find(params[:group_id])
@post = Post.new
end
也就是说, 我去掉了post_params的部分:
这样写, 就消除了之前的报错!
同样在views/posts下面生成edit的页面
成功显示了edit页面! 也就是说没有def show也是能直接写edit的啊啊啊!
注意, views的内容要指定到[@group, @post]这样才能显示! 之前尝试的时候, 只用到@post就不显示~
执行就报错
能正常显示咧~~
新的发现
发现一个问题, 这样edit执行后直接用了new的功能, 即, 之前写的旧内容不会显示, edit的页面里全是空的文章内容, 毕竟是new格式
所以应该不能用 @post = Post.new
尝试了一下, 真的不会把之前的内容"修改"而是真的执行new, 笑死了, 还跟new似的自动跳到group显示页面. "所谓的edit"执行后,生成了新的文章, 旧文章内容还保留. 真是要命哈哈哈哈
是不是定义了update后,就用上@post = Post.update即可显示旧内容了~期待一下
居然不是!!!
把@post = Post.new 改成 @post = Post.find(params[:group_id])就定位成功了!
报错汇总
在写了update的def后, 我还尝试过的
@post = Post.edit
@post = Post.update
@post = Post.edit(post_params)
@post = Post.find(post_params)
都被报错了!
新发现
改成这样, 也是同样能通过edit之前的报错. 这个估计好些? 感觉找的是post的ID?
推测这个params的写法习惯应该是直接写"[:id]"的话, 就是前面大写的词语的id, 比如,
Post.find(params[:id]) 这里直接的" :id " 就是前面首字母大写的"Post"的id的意思.