Rails form_for不接受新迁移列的参数



我刚刚将列soundcloud_urlimage_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 的值,结果告诉您它们不能为空白。

希望这个帮助

相关内容

  • 没有找到相关文章

最新更新