Codelove
Codelove

Reputation: 68

Ruby on Rails app - Adding multiple dynamic input field

I'm a Rails newbie, and I have a RoR app that I'm working on, the app is supposed to allow invited guests to RSVP to a wedding.

I have allowed for fields to be dynamically added, in order to include additional guests (family of an invited guest). But when I add the dynamic field and add the names, only the last name is displayed in the index.

Is there anything specific I need to do to render all other names together in a field within the table?

This is my current controller thus far:

class GuestsController < ApplicationController
skip_before_filter :authenticate_user!, only: [:new, :create]

  def index
    @guests = Guest.all
    
  end

  def new
    @guest = Guest.new
  end

  def create
    @guest = Guest.all
    @guest = Guest.create(guest_params)
    if @guest.save
      respond_to do |format|
        format.html { redirect_to :back, notice: 'Thank you for replying' }
        format.js
      end
    else
      respond_to do |format|
        format.html { render 'new' }
        format.js
      end
    end
  end

  def destroy
    @guest = Guest.find(params[:id])
    @guest.destroy
    redirect_to guests_path
  end

private
  
  def guest_params
    params.require(:guest).permit(:status, :name, :message)
  end

end

Upvotes: 0

Views: 883

Answers (1)

vipin
vipin

Reputation: 2510

Place Guest in place of User

users controler

  def new
   @users = []
   5.times do
   @users << User.new
  end
 end

 if params.has_key?("user")  
    User.create(users_params(params["user"]))
  else
    params["users"].each do |user|
     if user["name"] != nil || user["age"] != nil
      User.create(users_params(user))
     end
    end
  end

 def users_params(my_params)
   my_params.permit(:name, :age)
 end

users_form

<%= form_tag users_path do  %>


<% @users.each do |user| %>
<%= fields_for 'users[]', user do |u| %>




<div class="field">
<%= u.label :name %><br>
<%= u.text_field :name %>
</div>
<div class="field">
<%= u.label :age %><br>
<%= u.number_field :age %>
</div>
<% end %>
<% end %>
<div class="actions">
<%= submit_tag %>
</div>

<% end %>

Upvotes: 1

Related Questions