Submit multiple entries to database, from an array, in Rails on the same page -


i'm trying submit multiple entries database array. so, create multiple new entries , store them in array. in view, have form of checkboxes user check ones he/she wants add database. upon clicking submit, add each of these forms database in on shot. here code:

controller:

class eventsboyscontroller < applicationcontroller   def new     @season = find_season     @meet = find_meet(@season)     @athletes_boys = current_coach.athletes.where(boy: true)     @events_boys = []     @athletes_boys.each |athlete|       @events_boys << @meet.events_boys.new(:athlete_id => athlete.id)     end     @events = ["400 ih", "100", "1600", "400", "110 hh", "800", "3200", "200"]   end    def create     debugger     @season = find_season     @meet = find_meet(@season)     @events_boys = @meet.events_boys.create(events_boy_permit)     # debugger     if @events_boys.save       redirect_to @events_boys, notice: 'season created.'     else       render action: "new"     end   end    private   def find_season     season.find(params[:season_id])   end    def find_meet season     season.meets.find(params[:meet_id])   end    def events_boy_permit     params.require(:events_boy).permit(:season_id, :meet_id, :athlete_id, :boys_400_m_im, :boys_1600_m, :boys_400_m, :boys_110_m_hh, :boys_800_m, :boys_3200_m, :boys_200_m, :boys_100_m, :time_400_m_im, :time_1600_m, :time_400_m, :time_110_m_hh, :time_800_m, :time_3200_m, :time_200_m, :time_100_m, :place_400_m_im, :place_1600_m, :place_400_m, :place_110_m_hh, :place_800_m, :place_3200_m, :place_200_m, :place_100_m)   end  end 

view:

<h1><%= "create new events boys #{@meet.name}" %></h1>  <table id="events-table">   <tr>     <th></th>     <% @events.each |event| %>       <th><%= event %></th>     <% end %>   </tr>    <% @events_boys.each |event| %>     <tr>       <td><%= athlete.find_by_id(event.athlete_id).name %></td>       <%= form_for [@season, @meet, event], :html => { :mulitpart => true } |f| %>          <td><%= f.check_box :boys_400_m_im %></td>          <td><%= f.check_box :boys_100_m %></td>          <td><%= f.check_box :boys_1600_m  %></td>          <td><%= f.check_box :boys_400_m  %></td>          <td><%= f.check_box :boys_110_m_hh %></td>          <td><%= f.check_box :boys_800_m %></td>          <td><%= f.check_box :boys_3200_m  %></td>          <td><%= f.check_box :boys_200_m  %></td>          <td><%= f.submit "submit", :class => 'btn' %></td>        <% end %>     </tr>   <% end %>  </table>  <script type="text/javascript">   var athletes = new array();   var arrayinathletes = new array();   element = document.getelementbyid("events-table");   var athletesarray = element.children[0].children   (i=1; < athletesarray.length; i++) {     var rowarray = athletesarray[i].children;     arrayinathletes = [];     arrayinathletes[0] = rowarray[0].innertext;     var sum = 0;      (j=1; j < rowarray.length; j++) {       var checkbox = rowarray[j].children[0];       var checkedvalue = $('#'+checkbox.id+':checked').val();       if (checkedvalue === "1") {         arrayinathletes[sum+1] = rowarray[j].children[0].id;         sum += 1;       }     }      athletes[i-1] = arrayinathletes;    } </script> 

i think looking code below (needs adapted example).

contact.create([   {first_name: 'ryan', last_name: 'smith', email: 'ryan@smith.com'},    {first_name: 'john', last_name: 'doe', email: 'john@doe.com'} ]) 

all need put data array of hashes. each hash object want save. batch insert, think want.

you need pull values checked/unchecked params since passed controller. cycle through hash , perform logic on that.


Comments

Popular posts from this blog

android - Get AccessToken using signpost OAuth without opening a browser (Two legged Oauth) -

org.mockito.exceptions.misusing.InvalidUseOfMatchersException: mockito -

google shop client API returns 400 bad request error while adding an item -