控制器操作会调用要创建的记录数量
@guests = []
@quantity.times do
@guests << Guest.new
表单中的表示如下。
<%= form_tag multiple_guests_path do %>
<% @guests.each_with_index do |guest,index| %>
<%= fields_for 'guests[]', guest do |f| %>
参数已提交,如下所示:
Parameters: {"utf8"=>"✓", "guests"=>[{"name"=>"f1", "lastname"=>"l1", [...]}, {"name"=>"f2", "lastname"=>"l2",[...]}], "commit"=>" Send "}
但是multiple
控制器操作不会将这些参数作为访客参数
params[:guests].each do |guest|
@guest = Guest.new(guest_params)
为strong_params setter
返回错误param is missing or the value is empty: guest
def guest_params
params.require(:guest).permit(:name, :lastname,
此操作如何正确处理参数?
答案 0 :(得分:1)
当您在 /* json data to javascript json parser*/
var data = JSON.parse('<% @workout_routines %>');
$('.exercises').click(function(){
/* get '.exercises' index */
var idx = $(this).index('.exercises');
/* same index for '.workoutshow' use .eq()*/
$('.workoutshow').eq(idx).append(
"<li>" +
"Category: " + data[idx].category +
"</li>" +
"<li>" +
"Difficulty: " +
data[idx].difficulty +
"</li>"
);
});
上使用require
时,它会在params
哈希中查找您要求的密钥,如果找不到它,则会引发错误。
在你的情况下:
params
您需要一个名为def guest_params
params.require(:guest).permit(:name, :lastname....
的密钥,并且由于您从该页面获取的params哈希没有该密钥,因此您会收到该错误:
guest
您可以看到传递的密钥为param is missing or the value is empty: guest
- 复数形式。
因此您需要正确的密钥:
guests
我认为您也不需要任何密钥,只需使用许可证:
def guest_params
params.require(:guests).permit( ... )
end
但你应该要求你需要的东西!