1

Menucards 製品インデックス (http://localhost:3000/menucards/1/products) にアクセスしようとすると、次のエラーが表示されます: ID のない Menucard が見つかりませんでした。このページでは、現在のメニューカードにあるすべての製品を表示したいと思います。

これは私の製品コントローラです:

class ProductsController < ApplicationController
before_filter :load_menucard

layout 'admin'

def index
    @products = @menucard.product.all
end

def new
    @menucard = Menucard.find(params[:id])
    @product = @menucard.product.new
    redirect_to @product
end

def create
    @menucard = Menucard.find(params[:id])
    @product = @menucard.product.new(params[:product])
    if @product.save
        redirect_to(:action => 'index')
    else
        render 'new'
    end
end

def edit
    @product = Product.find(params[:id])
end

def destroy
    @product = Product.find(params[:id])
    delete_product
end

def update
    @product = Product.find(params[:id])
    if  @product.update_attributes(params[:product])
        #redirect_to @product
        redirect_to(:action => 'index')
    else
        render 'edit'
    end
end

private

 def load_menucard
    @menucard = Menucard.find(params[:id])
 end

end

メニューカードコントローラー:

class MenucardsController < ApplicationController

layout 'admin'

def new
    @menucard = Menucard.new
end

def update
    @menucard = Menucard.find(params[:id])
    if  @menucard.update_attributes(params[:menucard])
        #redirect_to @menucard
        redirect_to(:action => 'index')
    else
        render 'edit'
    end
end

def edit
    @menucard = Menucard.find(params[:id])
end

def index
    @menucards = Menucard.all
end

def create
    @menucard = Menucard.new(params[:menucard])
    if @menucard.save
        #redirect_to @menucard
        redirect_to(:action => 'index')
    else
        render 'new'
    end
end

def destroy
    @menucard = Menucard.find(params[:id])
    if menucard.destroy
        redirect_to(:action => 'index')
    end
end
end

製品ビュー インデックス:

<h1>Alle producten</h1>
<%= link_to("Product toevoegen", {:action => 'new' }, :class => 'btn btn-green') %>
<table>
<thead>
    <tr>
        <th scope="col">Naam</th>
        <th scope="col">Beschrijving</th>
        <th scope="col">Prijs</th>
    </tr>
</thead>
<tbody>
<% @products.each do |p|  %>
        <tr>
            <td><a href="#" title=""><%= p.name %><%= link_to("- bewerken", { :action => 'edit', :id => p.id}, :class => 'show-edit') %></a></td>
            <td><%= p.discription %></td>
            <td><%= p.price %></td>
        </tr>
    <% end %>
</tbody>
</table>
4

1 に答える 1

0

問題が「load_menucard」定義にあることを確認してください。ネストされたリソースであるため、params[:id] ではなく、params[:menucard_id] にする必要があります。

交換

@menucard = Menucard.find(params[:id])

@menucard = Menucard.find(params[:menucard_id])

それがうまくいくことを願っています!

于 2012-11-28T10:33:30.810 に答える