Ruby on Railsでプログラミングを開始したところ、問題が見つかりました。モデルを編集してコントローラからの検証に失敗した場合、コントローラは#showモデルのURLを返します。 #updateをキャンセルして#モデルに移動すると、ブラウザは以前に#updateプロセスが返すエラーページを表示します。私はこの行動が好きではない。その問題はターボリンクだと思う。だから、コントローラの#updateのURLを変更できるかどうかは分かりません。なぜこのようなことが起きるのでしょうか?ありがとうございました。Railsでモデル更新が失敗した後に表示するための送信を避ける方法
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
ショーのページ:
<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>
あなたはフラッシュメッセージを使用していますか?コントローラとビューのコードを提供できますか? – heyitsjhu
私はすべてを生成するために足場を使用しています。これは、カテゴリコントローラのコードとビューの表示です。 http://collabedit.com/qh2a8 – Dar