我刚刚将列soundcloud_url
和image_url
迁移到我的posts
表中。 我正在尝试在 _form.html.erb 中添加soundcloud_url和image_url作为字段(提交和创建新帖子),但每次我尝试提交时,我都被告知soundcloud_url和image_url不能为空。 但他们不是,我在这里做错了什么?
后.rb
class Post < ActiveRecord::Base
validates_presence_of :body, :title, :soundcloud_url, :image_url
end
_form.html.erb
<div class="field">
<%= f.label :title %><br>
<%= f.text_field :title, :size => "80" %>
</div>
<div class="field">
<%= f.label :body %><br>
<%= f.text_area :body, :rows => 10, :cols => 50 %>
</div>
<div class="field">
<%= f.label :image_url %><br>
<%= f.text_area :image_url, :rows =>"2", :cols => "50" %>
</div>
<div class="field">
<%= f.label :soundcloud_url %><br>
<%= f.text_area :soundcloud_url, :rows =>"2", :cols => "50" %>
</div>
我想你忘了将这两个属性添加到你的强参数中,如果是这样,你应该在你的posts controller
中有类似以下内容的东西:
def post_params
params.require(:post).permit(:soundcloud_url, :image_url, ......)
end
如果您不知道什么是强参数,您可以看到这篇文章,我们使用强参数本质上是为了防止恶意用户为不允许的属性分配值,因此您应该指定您希望用户通过表单更新的列,如果您没有设置:soundcloud_url
并:image_url
允许的参数, Rails 将拒绝接受它们的值,这意味着您的模型找不到 soundcloud_url 和 image_url 的值,结果告诉您它们不能为空白。
希望这个帮助