我刚刚将列soundcloud_url
和image_url
迁移到我的posts
表格。我试图在_form.html.erb中添加soundcloud_url和image_url作为字段(提交并创建新帖子),但每次我尝试提交时,都会被告知soundcloud_url和image_url不能为空。但他们不是,我在这里做错了什么?
post.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>
答案 0 :(得分:2)
我认为您忘了将这两个属性添加到您的强参数中,如果是这样,您应该在posts controller
中添加以下内容:
def post_params
params.require(:post).permit(:soundcloud_url, :image_url, ......)
end
如果你不知道什么是强参数,你可以看到这个post,我们使用强参数本质上是为了防止恶意用户将值分配给非允许的属性,所以你应该指定你想要的列是什么用户要通过表单进行更新,如果您没有将:soundcloud_url
和:image_url
设置为允许的参数,Rails将拒绝接受其值,这意味着您的模型无法找到soundcloud_url和image_url的值以及结果告诉你他们不能空白。
希望这个帮助