0

別の表示ビューを必要としない Item モデルがあります。代わりに、アイテムが更新されたときに、ユーザーをインデックスに戻したいと思います。アイテムを編集するためにフォームが送信されると、次のようなエラーが発生します。No route matches [PUT] "/items/1"

ここにルートファイルがあります

Order::Application.routes.draw do

  root to: 'static_pages#home'

  resources :static_pages
  resources :customers
  resources :demands

  resources :items, only: [:new, :create, :destroy, :index, :edit]


end

コントローラーはこちら

class ItemsController < ApplicationController

    def index
        @items = Item.all
    end

    def new
        @item = Item.new
    end

    def create
        @item = Item.new(params[:item])
        if @item.save
            flash[:success] = "Item saved!"
            redirect_to items_path
        else
            render new_item_path
        end
    end

    def destroy
        Item.find(params[:id]).destroy
        redirect_to items_path
    end

    def edit
        @item = Item.find(params[:id])
    end

    def update
        @item = Item.find(params[:id])
        if @item.update_attributes(params[:item])
            redirect_to 'items#index'
            flash[:success] = "Item updated!"
        else
            render 'edit'
        end
    end 


end

モデルはこちら

class Item < ActiveRecord::Base
  attr_accessible :name, :price

  validates :name, presence: true

  VALID_PRICE_REGEX = /^[+-]?[0-9]{1,3}(?:,?[0-9]{3})*\.[0-9]{2}$/
  validates :price, presence: true, format: {with: VALID_PRICE_REGEX}

end
4

1 に答える 1

1

ルート ファイルにupdateアクションがありません。items

resources :items, only: [:new, :create, :destroy, :index, :edit]

する必要があります

resources :items, only: [:new, :create, :destroy, :index, :edit, :update]

または、より簡潔に言うと、

resources :items, except: [:show]
于 2013-06-29T21:11:40.673 に答える