2

类别/show.html.erb

<body class="home">
<% @category.subcategories.each do |subcategory| %>
    <%= link_to subcategory.name, subcategory.id %>
<% end %> 

在 Category#show undefined method `model_name' for Fixnum:Class 中引发 NoMethodError

网址是http://example.com:3000/category/11

路由.rb

FirstApp::Application.routes.draw do
  root 'category#index'
  resources :category 
end

类别控制器

class CategoryController < ApplicationController

  def index
    @categories = Category.all
  end    

  def new
  end

  def show
    @category = Category.find params[:id]
  end
end

子类别控制器为空

class SubcategoryController < ApplicationController

  def create
  end

  def new
  end

  def show
    @category = Category.find(params[:id])
  end
end

方法 category.subcategories 在控制台中工作。我可能遗漏了一些明显的东西。

4

3 回答 3

3

尝试这个:

<%= link_to subcategory.name, subcategory %>

当你subcategory.id作为第二个参数传递给这个方法时,Rails 会尝试猜测Fixnum你传递的路径。由于这是不可能的,因此会引发错误。

您还应该添加

resources :subcategories

到您的 routes.rb 并将您的重命名SubcategoryControllerSubcategoriesController.

并且SubcategoriesController#show应该是:

@subcategory = Subcategory.find(params[:id])
于 2013-08-30T10:21:22.137 回答
0

改变

<%= link_to subcategory.name, subcategory.id %>

<%= link_to subcategory.name, subcategory %>
于 2013-08-30T10:31:26.257 回答
0

你能试试这个吗

 <% @category.subcategories.each do |subcategory| %>
   <%= link_to subcategory.name, subcategory_path(subcategory) %>
 <% end %> 

并且在控制器中希望您有一个many to manycategory

def show
  @category = SubCateogry.find params[:id]
end

在路线中

resources :subcategories
于 2013-08-30T10:27:03.777 回答