我最近在Rails 4中构建的博客应用程序中添加了一个字段“标记”。您可以在下面看到编辑视图中显示的字段:
但是一旦我在编辑后返回到Show视图,就不会出现:
当我直接检查数据库时,我肯定可以看到它存在:
sqlite> PRAGMA table_info(POSTS);
0|id|INTEGER|1||1
1|title|varchar(255)|0||0
2|body|text|0||0
3|created_at|datetime|0||0
4|updated_at|datetime|0||0
5|slug|varchar(255)|0||0
6|tag|varchar(255)|0||0
有人可以建议发生了什么或如何解决这个问题吗?
答案 0 :(得分:2)
Rails 4默认使用strong parameters。这意味着您必须将要批量分配的参数明确列入白名单。
向模型添加新属性时,您必须记住更新控制器中允许的参数。
例如,在您的情况下,您需要确保添加:tags
,如下所示:
class PostController < ActionController::Base
def update
post = Post.find(params[:id])
post.update(post_params)
redirect_to post
end
private
def post_params
params.require(:post).permit(:title, :body, :tag)
end
end