在尝试传递数组和隐藏字段以创建新对象时不断获得"param is missing errors"



我有一些问题让我的形式工作。通过Odin的东西,我试图允许用户邀请其他用户参加他们的活动。我想通过在后台传递attended_event_id来做到这一点,然后通过复选框传递选定用户的user_id数组。我有以下,但不断得到参数丢失错误。我做了一些改变,并想尝试从我的强参数向后工作到我的形式。

/show.html事件。erb

<% @user.owned_events.each do |e| %>
<ul>
<li><%= e.name %>  |  <%= link_to "Invite Guests", invitations_new_path(:event_select => e.id) %></li>

将当前事件作为event_select传递。

然后,我使用该事件id以及所有用户id(减去current_user)来创建可能的受邀者列表。

invitations_controller.rb:

class InvitationsController < ApplicationController
helper_method :current_user

def new
@event_selected = Event.find(params[:event_select])
@users = User.where("id != ?", current_user.id )
end
def create
@invitation = Invitation.new(invite_params)
end
private
def invite_params
#OLD PARAMS STATEMENT: params.require(:attended_event_id => params[:event_selected], :attendee_id => params[:user_ids].first )
 #NEW PARAMS STATEMENT
     params.require(:invitation).permit(:attended_event_id, :attendee_id)
end
end

我的视图显示了用户列表,在选择了一个复选框之后,应该传递event_selected和user_ids。

邀请/new.html。动词<——这就是我不知道如何改变的地方

    <h3>Invite users to <%= @event_selected.name %></h3>
<%= bootstrap_form_for Invitation.new do |f| %>
<br>
  <ul>
    <% @users.each do |user| %>
    <li>
      <%= hidden_field_tag :event_selected, @event_selected.id %>
  <%= check_box_tag 'user_ids[]', user.id %>
  <%= h user.name %>
  </li>
  <% end %>
  </ul>
<br>
<%= submit_tag "Invite Selected Users" %>
<% end %>

我试图让这个工作只选择一个用户在移动之前,从选定的事件与user_id数组中的所有结果相结合创建多个对象。当我选择单个用户时,我总是得到缺少参数的错误,但查看哈希,似乎一切都在那里。

param is missing or the value is empty: {:attended_event_id=>"14", :attendee_id=>"3"}
    Parameters:
 {"utf8"=>"✓",
 "authenticity_token"=>"GMMg9DwnTRAw4qP/ICqgACUB4d42Pl9Y7hrrNQzO38K8inbgyM00H2etrepjrT35hwIenHfwQPQW08V6QnHl1A==",
 "event_selected"=>"14",
 "user_ids"=>["3"],
 "commit"=>"Invite Selected Users"}

在这个编码的东西很新的,但这是第一个问题,我还没有能够通过很多stackoverflow搜索解决。我好像漏掉了什么。

因此,在浏览了链接并向后工作之后,我找出了给我带来最多问题的前半部分。

def invite_params
#OLD PARAMS STATEMENT: 
params.require(:attended_event_id => params[:event_selected], :attendee_id => params[:user_ids].first )
#NEW PARAMS STATEMENT: 
params.require(:invitation).permit(:attended_event_id, :attendee_id)

然后我把隐藏标签改成:

<%= f.hidden_field :attended_event_id, :value => @event_selected.id %>

这允许我通过邀请#new传递来自事件控制器的attended_event_id到邀请#create。

现在我只需要弄清楚如何迭代哈希作为参数的一部分。

相关内容

最新更新