我的项目是关于一个在线购物网站。现在我想创建一个篮子。 我尝试编辑篮子时出错。 我的代码是:
<% @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
答案 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
下嵌套您的路线/资源并不意味着您的数据结构必须符合它。