Ich begann mit Ruby on Rails zu programmieren, und ich habe ein Problem gefunden. Wenn ich ein Modell bearbeite und dies bei der Validierung vom Controller fehlschlägt, gibt der Controller die #show-Modell-URL zurück. Danach, wenn ich das #update abbringe und # das Modell betrachte, zeigt mir der Browser die Fehlerseite an, die der #update-Prozess vorher zurückgibt. Ich mag dieses Verhalten nicht. Ich denke, dieses Problem ist Turbolink. Also ich weiß nicht, ob ich die URL für #update in Controller ändern kann. Irgendwelche Ideen warum passiert das? Danke fortgeschritten.Wie zu vermeiden, senden, um die Ansicht anzuzeigen, nachdem die Modellaktualisierung in Rails fehlschlägt
The next image shows this behavior
class CategoriesController < ApplicationController
before_action :set_category, only: [:show, :edit, :update, :destroy]
# GET /categories
# GET /categories.json
def index
@categories = Category.all
end
# GET /categories/1
# GET /categories/1.json
def show
end
# GET /categories/new
def new
@category = Category.new
end
# GET /categories/1/edit
def edit
end
# POST /categories
# POST /categories.json
def create
@category = Category.new(category_params)
respond_to do |format|
if @category.save
format.html { redirect_to @category, notice: 'Category was successfully created.' }
format.json { render :show, status: :created, location: @category }
else
format.html { render :new }
format.json { render json: @category.errors, status: :unprocessable_entity }
end
end
end
# PATCH/PUT /categories/1
# PATCH/PUT /categories/1.json
def update
respond_to do |format|
if @category.update(category_params)
format.html { redirect_to categories_url, notice: 'Category was successfully updated.' }
format.json { render :show, status: :ok, location: @category }
else
format.html { render :edit }
format.json { render json: @category.errors, status: :unprocessable_entity }
end
end
end
# DELETE /categories/1
# DELETE /categories/1.json
def destroy
@category.destroy
respond_to do |format|
format.html { redirect_to categories_url, notice: 'Category was successfully destroyed.' }
format.json { head :no_content }
end
end
private
# Use callbacks to share common setup or constraints between actions.
def set_category
@category = Category.find(params[:id])
end
# Never trust parameters from the scary internet, only allow the white list through.
def category_params
params.require(:category).permit(:name)
end
end
Zeige Seite:
<h2 class="page-header">Categoría #<%= @category.id %></h2>
<div class="panel panel-default">
<div class="panel-heading">
Detalles de la categoría
</div>
<div class="panel-body">
<dl class="dl-horizontal">
<dt>Nombre</dt>
<dd><%= @category.name %></dd>
</dl>
<%= link_to 'Editar', edit_category_path(@category), class: 'btn btn-link' %> |
<%= link_to 'Volver', categories_path, class: 'btn btn-link' %>
</div>
</div>
verwenden Sie Flash-Nachrichten? Können Sie den Code für Ihren Controller bereitstellen und anzeigen? – heyitsjhu
Ich benutze Gerüst für alle generieren. Dies ist der Code des Kategorien-Controllers und der Ansichtshow. http://collabedit.com/qh2a8 – Dar