将新列迁移到表并在Rails中更新其表单但无法更新

时间:2017-11-02 01:38:01

标签: ruby-on-rails

我在我的Rails项目中使用名为Lines的博客引擎,博客帖子包含在名为LinesArticle的表中。

我想添加一个自定义属性来隐藏付费专区后面的某些帖子,因此我运行了以下迁移并成功进行了调整:

class AddPaywallToLinesArticles < ActiveRecord::Migration
  def change
    add_column :lines_articles, :paywall, :string
  end
end

添加到此表中的每篇博文都通过我的views / Lines / articles文件夹中包含的UI中的表单发布。我添加了一个新的text_field(用户会在其中写入yes或no,我知道我可以通过布尔值来执行此操作,但是想要使用字符串来测试它)。

<div class="input-field checkbox">
<%= f.label :paywall %><br>
<%= f.text_area :paywall%>

表单现在加载并显示text_area;但是,当我提交表单时,不会保存该文本。如果我检查表中的最后一条记录,则输出示例:

 <LinesArticle id: 5, title: "Test 2 with False", teaser: nil, insider: nil, paywall: nil> 

因此,paywall列未使用我输入的字符串进行更新。我不认为这是表单的问题 - 我想知道真正的问题是否是我需要设置某种permits: - 这个博客引擎虽然没有与之关联的Controller。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

您的问题很可能是由于控制器中缺少强参数造成的:

def create
 ...
 @lineArticle = LinesArticle.create(line_article_params)
 ...
end

private

def line_article_params
  params.require(:line_article).permit(:title, :teaser, :insider, :paywall)
end