2016-04-10 13 views
0

In meiner Schiene App habe ich dieses Bearbeitungsformular, das nicht richtig zu funktionieren scheint. Wenn ich die Bearbeitungsseite über einen Link betrete, sieht alles gut aus, aber die Schaltfläche zum Senden des Formulars funktioniert nicht. Wenn ich das Fenster aktualisiere, funktioniert es gut.Schienen, bearbeiten Link wird umleiten, aber Update-Taste funktioniert nicht

Edit.html.erb

<div class="alien-choice"> 
     <h2 class="player_name"><%= current_user.username %></h2> 
     <p> Choose <span>0</span>/2 Power</p> 

    <%= form_for [@gameround, @currentplayer] do |f| %> 

     <% alleflares = @currentplayer.flares %> 

     <% alleflares.each { |val| 
      printAlien = Alien.find_by_title(val) 
     %> 
     <div class="alien_wrap"> 
      <h3><%= printAlien.title %> <span>[<%= printAlien.expansion.abbr %>]</span></h3> 

      <label for="<%= printAlien.title %>"> 
       <div class="alien" style="background-image: url(<%= printAlien.avatar.url %>)"> 
      </label> 

      <%= f.check_box(:aliens, { :multiple => true, :id => printAlien.title, :class => 'choosealiens'}, printAlien.title, nil) %> 

      </div> 
     </div> 


     <% } %> 

     </div> 
      <div class="actions"> 
      <%= f.submit %> 
     </div> 
    <% end %> 

<%= link_to 'Back', gameround_currentplayers_path %> 

Der Controller

class CurrentplayersController < ApplicationController 
    before_action :set_currentplayer, only: [:show, :edit, :update] 

    # GET /currentplayers 
    # GET /currentplayers.json 
    def index 
    @currentplayers = Currentplayer.all 
    end 

    # GET /currentplayers/1 
    # GET /currentplayers/1.json 
    def show 
    @gameround = Gameround.find(params[:gameround_id]) 
    @currentplayer = @gameround.currentplayers.find(params[:id]) 

    current_user 
    end 

    # GET /currentplayers/new 
    def new 
    @gameround = Gameround.find(params[:gameround_id]) 
    @currentplayer = Currentplayer.new 
    end 

    # GET /currentplayers/1/edit 
    def edit 
     @gameround = Gameround.find(params[:gameround_id]) 
     @currentplayer = @gameround.currentplayers.find(params[:id]) 

    end 

    # POST /currentplayers 
    # POST /currentplayers.json 
    def create 
    @gameround = Gameround.find(params[:gameround_id]) 

    @currentplayer = @gameround.currentplayers.create(currentplayer_params); 

    respond_to do |format| 
     if @currentplayer.save 
     format.html { redirect_to @gameround, notice: 'Currentplayer was successfully created.' } 
     format.json { render :show, status: :created, location: @currentplayer } 
     else 
     format.html { render :new } 
     format.json { render json: @currentplayer.errors, status: :unprocessable_entity } 
     end 
    end 
    end 

    # PATCH/PUT /currentplayers/1 
    # PATCH/PUT /currentplayers/1.json 
    def update 
     @gameround = Gameround.find(params[:gameround_id]) 
     @currentplayer = @gameround.currentplayers.find(params[:id]) 

     if @currentplayer.update(currentplayer_params) 
     redirect_to gameround_currentplayer_path 

     else 
     render 'edit' 
     end 


    end 

    # DELETE /currentplayers/1 
    # DELETE /currentplayers/1.json 
    def destroy 
    @gameround = Gameround.find(params[:gameround_id]) 
     @currentplayer = @gameround.currentplayers.find(params[:id]) 
    @currentplayer.destroy 
    respond_to do |format| 
     format.html { redirect_to '/play', notice: 'Currentplayer was successfully destroyed.' } 
     format.json { head :no_content } 
    end 
    end 

    private 
    # Use callbacks to share common setup or constraints between actions. 
    def set_currentplayer 
     @currentplayer = Currentplayer.find(params[:id]) 
    end 

    # Never trust parameters from the scary internet, only allow the white list through. 
    def currentplayer_params 
     params.require(:currentplayer).permit(:log_id, :flares, :winner, :bases, :gameround_id, aliens:[]) 
    end 
end 

config.routes

Rails.application.routes.draw do 


    resources :gamerounds do 
    resources :currentplayers 
    end 

Antwort

-1

Sie möchten Ihre Routen in config/routes.rb wie folgt erstellen:

resources :current_players 
+0

Ich habe es bereits in Routen hinzugefügt, aber es ist verschachtelt. Ich habe meine Frage aktualisiert, damit Sie meine Routes-Dateien sehen können. Ich kann die Bearbeitungsseite gut eingeben und das Formular sehen, aber nichts passiert, wenn ich auf die Schaltfläche zum Speichern/Aktualisieren klicke. Wenn ich die Seite jedoch aktualisiere, funktioniert sie, wenn ich auf die Schaltfläche klicke. – Candielope

0

Ich habe es herausgefunden. Es war nur, weil der Submit-Button außerhalb des Hauptdivs lag. Entschuldigen Sie die Umstände!

Verwandte Themen