gpt4 book ai didi

ruby-on-rails - Ruby on Rails form_for 发布到数据库不适用于一列,但适用于同一表中的其他列

转载 作者:搜寻专家 更新时间:2023-10-30 20:31:28 24 4
gpt4 key购买 nike

这是我的第一个 Rails 项目。出于某种原因,我无法发布到我的数据库中的一列,尽管同一个表中的其他列工作正常。 (当我填充同一个表中的其他列时,我也无法使用 Faker gem 填充该列,所以我只是进入数据库并手动填充它们,这样我就可以跳过它。)

我的数据库有一个表“articles”,其中包含列“id”、“content”、“user_id”、“created_at”、“updated_at”和“heading”。我创建新文章的表单是这样的:

<%= form_for @article do |f| %>
<div class="field">
<%= f.text_field :heading, :size => "60x1" %>
</div>
<div class="field">
<%= f.text_area :content, :size => "60x24" %>
</div>
<div class="actions">
<%= f.submit "Submit" %>
</div>
<% end %>

我的 articles_controller 有:

def new
@article = Article.new
end

def create
if @article = current_user.articles.create!(params[:article])
redirect_to root_path, :flash => { :success => "Article created!" }
else
redirect_to "/articles/new"
end
end

当我尝试提交表单时,它要么捕捉到我的标题验证 (:presence => true),要么在我注释掉验证时只提交没有标题。该帖子正在发送这些参数:

{"utf8"=>"✓",
"authenticity_token"=>"...",
"article"=>{"heading"=>"Test heading",
"content"=>"Test content"},
"commit"=>"Submit"}

看起来有一个标题。填写所有其他列,包括 user_id。为什么标题没有填写?我已经运行 rake db:migrate 并且还在我的迁移中添加了 reset_column_information:

def self.up
add_column :articles, :heading, :string
Article.reset_column_information
end

但不管怎样都行不通。

此外,如果我进入 Rails 控制台并以这种方式添加新文章,我可以毫无问题地添加标题。

如果重要的话,我正在使用 SQLite。我在稍后的迁移中添加了标题列,它在列顺序中排在最后会不会有问题?

最佳答案

我已经研究了好几天了,实际上我一发布就解决了。在我的 article.rb 中,我有:

attr_accessible :content

我必须将其更改为:

attr_accessible :content, :heading

关于ruby-on-rails - Ruby on Rails form_for 发布到数据库不适用于一列,但适用于同一表中的其他列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5507803/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com