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

时间:2014-03-30 00:07:49

标签: ruby-on-rails ruby-on-rails-3 forms ruby-on-rails-4

我刚刚将列soundcloud_urlimage_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>       

1 个答案:

答案 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的值以及结果告诉你他们不能空白。

希望这个帮助