创建多个未通过的记录

时间:2018-01-24 17:18:56

标签: ruby-on-rails

控制器操作会调用要创建的记录数量

@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,

此操作如何正确处理参数?

1 个答案:

答案 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

但你应该要求你需要的东西!