【问题标题】:NameError in Category#index类别中的名称错误#index
【发布时间】:2020-07-03 08:48:12
【问题描述】:

下面是我的类别控制器:

class CategoryController < ApplicationController

  def index  
    @category = Category.all    
  end

  def new
    @category = Category.new
  end

  def create
    @category = Category.new(params[:category])
    @category.save
    redirect_to @category   
  end

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

  private

    def category_params
      params.require(:category).permit(:name)
    end

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

end

这是我想要显示所有类别的索引页面

<h1>ALL CATEGORIES</h1>
<% @category.each do |c|%>
  <ul><%= link_to c.name, categories_path(category) %></ul> 
<% end %>
<%= link_to "Add Category", new_category_path %>  

这些是我为这个控制器设置的路由

Rails.application.routes.draw 做

root 'category#index'
post '/category' => 'category#create'
get '/category/new' => 'category#new', as:'new_category'
get '/category/:id' => 'category#show', as:'categories'

结束

为什么我会收到此名称错误,我该如何解决?

未定义的局部变量或方法category' for enter code 这里#&lt;#&lt;Class:0x00007feddc03ad50&gt;:0x00007fede47f8378&gt; 你的意思是? @category

【问题讨论】:

  • 嗨@Pulkit Kumar,我相信您的变量是c 而不是category。试试这个代码:&lt;ul&gt;&lt;%= link_to c.name, categories_path(c) %&gt;&lt;/ul&gt;。另外,我建议您阅读以下内容:guides.rubyonrails.org/action_controller_overview.html 以获得最佳实践。
  • 感谢先生您的回答,只需通过 c 即可解决

标签: ruby-on-rails ruby ruby-on-rails-3


【解决方案1】:

请尝试将您的文件重命名为categories_controller.rb,并且类名应为CategoriesController

作为 Rails 约定,控制器应该以复数形式命名。

您还可以将路由更改为resources :categories,而不是将每个路由单独映射到单独的操作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多