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
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