Rails 4 - 列存在但不更新

时间:2014-03-01 07:56:40

标签: ruby-on-rails-4 sqlite

我最近在Rails 4中构建的博客应用程序中添加了一个字段“标记”。您可以在下面看到编辑视图中显示的字段:

rendered form

但是一旦我在编辑后返回到Show视图,就不会出现:

Post view

当我直接检查数据库时,我肯定可以看到它存在:

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

有人可以建议发生了什么或如何解决这个问题吗?

1 个答案:

答案 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