Form_for在索引栏中4

时间:2016-01-09 14:46:20

标签: ruby-on-rails ruby

我的项目是关于一个在线购物网站。现在我想创建一个篮子。 我尝试编辑篮子时出错。 我的代码是:

<% @basket.each do |t|%>
<tr>
<td>
    <%= form_for [:editnum,t], url: user_basket_path(current_user,t) do |f| %>
        <%= f.label :Number%>
        <%= f.number_field :num %>
        <%= f.submit :Edit %>
    <%end%>
</td>

在控制器中我试图获得参数:

params.require(:editnum).permit(:num)

但错误是:

param is missing or the value is empty: editnum

1 个答案:

答案 0 :(得分:1)

应该是......

params.require(:basket).permit(:num)

错误来自params hash,说明editnum不存在。你的params方法需要 editnum值,因此你应该传递以下参数hash:

params: {
   "editnum" => {
      "num" => "value"
   }
}

强大的params方法基本上会要求&#34; editnum,如果它没有得到它,将拒绝该请求&amp;引发异常(你的错误)。

解决这个问题的方法是确保您传递正确的值。

由于您正在使用form_for,因此您应该期待&#34;顶级&#34; params hash是你正在编辑的对象。在您的情况下,它是basket,因此我希望存在basket值:

params: {
   "basket" => {
      "num" => "value"
   }
}

-

我认为你对你如何调用嵌套数据感到困惑。仅仅因为您在editnum下嵌套您的路线/资源并不意味着您的数据结构必须符合它。