So much great help!! 

So I have made some changes in response to everyone's comments as well as 
some other research and got a simplified version of just passing the event 
and a manually entered user id into the form and got it to create the 
invitation object. 

My current problem is getting the array of selected user_ids to work and 
create multiple invitation objects from the form. 

I have updated the new.html.erb: 


<h3>Invite users to <%= @event_selected.name %></h3>


  <%= bootstrap_form_for Invitation.new do |f| %>
    <br>
      <ul>
       <%= f.hidden_field :attended_event_id, :value => @event_selected.id 
%>
       <% @users.each do |user| %>
         <li>
           <%= check_box_tag 'attendee_ids[]', user.id %>
           <%= h user.name %>
         </li>
       <% end %>
      </ul>
    <br>
  <%= f.submit "Invite Selected Users" %>
<% end %>


I had cleaned up the params and tried to get the array iteration to work: 

class InvitationsController < ApplicationController
  helper_method :current_user
 


  def new
   @event_selected = Event.find(params[:attended_event_id])
   @users = User.where("id != ?", current_user.id )
  end


  def create
    @invitations= invite_params[:attendee_ide_ids].map do |attendee_id|
      Invitation.new(
    attended_event_id: invite_params[:attendent_event_id],
    attendee_id: attendee_id
      )
    end
  
    if @invitations.any?(&:invalid?)
    flash.now[:error] = "Failure!"
      redirect_to root_path
    else
    @invitations.each(&:save!)
  
    flash.now[:success] = "Invited!"
      redirect_to root_path
    end
  end
  
  private
  
  def invite_params
    params.require(:invitation).permit(:attended_event_id, attendee_id: [])
  end
end

I'm getting an undefined method `map' for nil:NilClass error currently. I 
think I'm getting closer though.

Current hash I'm passing: 

*Parameters*:

{"utf8"=>"✓",
 
"authenticity_token"=>"ZvFBC0sqw5zEV0hwRBCu+ri2IeJgVbAx3CMmi7Osac7DyiKQf9Q20Yz7Db3eSE0Vgd9b/0r8XDmEE4P6XnTQNg==",
 "invitation"=>{"attended_event_id"=>"3"},
 "attendee_ids"=>["3"], 

"commit"=>"Invite Selected Users"} 


On Wednesday, October 14, 2015 at 12:36:39 PM UTC-5, Brent wrote:
>
> I noticed a discrepancy in the field name:
>
> def new@event_selected = Event.find(params[:event_select])
>
>
> ...
>
> Parameters:
>
>  {"utf8"=>"✓",
>  
> "authenticity_token"=>"GMMg9DwnTRAw4qP/ICqgACUB4d42Pl9Y7hrrNQzO38K8inbgyM00H2etrepjrT35hwIenHfwQPQW08V6QnHl1A==",
>  "event_selected"=>"14",
>
>
> In the find query, you're using :event_select, and in the posted 
> parameters, its :event_selected.
>
> As Fred pointed out, your use of strong parameters and the form helpers 
> seems wrong, but aside from those problems, it looks like you're not 
> actually calling your "invite_params" method anyways. If you want to make 
> use of strong parameters, in "new", you would use, 
> Event.find(invite_params[:event_selected]).
>
> Best,
> Brent
>
>
> On Tuesday, October 13, 2015 at 2:46:28 PM UTC-6, Prkl8r wrote:
>>
>> I am trying to pass parameters from an "Events" controller, to an 
>> "Invitations" controller and from the Invitations#new to the 
>> Invitations#create views. I think I'm pretty close to getting this wrapped 
>> up bit keep getting: "param is missing or the value is empty: " errors when 
>> I run it.
>>
>>
>> In order to pass the event.id from the Event#show view I am doing the 
>> following through the "Invite Guests" link.
>>
>>
>> events/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>
>>
>>
>>
>> That should pass the current event selected as event_select.
>>
>> I am then using that event id as well as all of the user ids(minus the 
>> current_user) to create a list of possible invitees.
>>
>>
>> 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
>> params.require(:attended_event_id => params[:event_selected], :attendee_id 
>> => params[:user_ids].first )
>>  end
>> end
>>
>>
>>
>> My view showing the list of users and after selecting a checkbox, should 
>> pass the event_selected and user_ids.
>>
>>
>> invitations/new.html.erb
>>
>>     <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 %>
>>
>>
>> I am trying to get this to work to select just a single user at a time 
>> before moving to create multiple objects from the selected event combined 
>> with all the results in the user_id array. When I select a single user I 
>> keep getting the missing param error but looking at the hash, it seems like 
>> everything is there.
>>
>> 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"}
>>
>>
>> Pretty new at this coding thing but this is the first problem I haven't 
>> been able to solve through a lot stackoverflow searches. I seem to be 
>> missing something here and I'm sure it's just a simple thing. Then again I 
>> could be completely missing the mark trying to go about this without 
>> following a bit more guided path... 
>>
>>
>>
>>
>>

-- 
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/rubyonrails-talk/423c2e1a-5c49-4cf5-bc6d-2415de25d387%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to