param丢失或值为空:status

时间:2015-05-12 15:11:14

标签: ruby-on-rails ruby ruby-on-rails-4 parameters missing-data

当我尝试提交新状态时,我会得到以下内容。我有一个工作正常的注册表,不知道这里发生了什么。感谢帮助。

def status_params
  params.require(:status).permit(:type_id, :user_id)
end

def create
  @status = Status.new(status_params)

  respond_to do |format|
    if @status.save

请求

{"utf8"=>"✓",
       "authenticity_token"=>"gZPV4FfSm2eb+pGPbAAqI4zA/LHJiAsRkHdJar/aU3G63oBiaLr55zPoRv3K+7EmelN2Nofj/CTZ+qPtoYih5w==",
     "type"=>{"user_id"=>"3"},
     "type_id"=>"Ocular",
     "commit"=>"Create Status"}

我的观点

  <div class="field">
    <%= f.label :user_id %><br>
    <%= select(:user_id, @user_options) %>
  </div>

  <div class="field">
    <%= f.label :type_id %><br>
    <%= select_tag :type_id, options_for_select(mg_types) %>
  </div>

2 个答案:

答案 0 :(得分:2)

你的参数不在status哈希。所以, 试试这个 -

 def status_params
   params.permit(:type_id, type[:user_id])
 end

答案 1 :(得分:1)

我可以在这里看到多个问题:

  1. 发布的参数未包含在status哈希值中。
  2. 您要发布一个名为type的属性哈希,其中包含user_id,这与您列入白名单的属性不一致。
  3. 您还发布了一个名为type_id的属性,其中包含字符串(而不是ID)。
  4. 发布typetype_id两个冲突,因为Rails会在Status模型上设置这些属性,而另一个可能会覆盖另一个。