【问题标题】:Uninitialized constant controller name未初始化的常量控制器名称
【发布时间】:2015-10-11 16:18:16
【问题描述】:

在routes.rb 中,我使用了resources nicknames。在nickname_controller,我做到了:

def index
    @nick_name = current_user.nicknames.build
    @nick_names = current_user.nicknames.all
  end

def create
    @nick_name = current_user.nicknames.build(nn_create_param)
    if @nick_name.save
      flash[:success]= 'Name created'
      redirect_to nickname_path
    else
      flash[:danger]= "Name can't be created"
      redirect_to nickname_path
    end
  end

在索引视图文件中,

<%= form_for @nick_name do |f| %>
    <%= f.text_field :nickname %>
    <%= f.submit 'Submit' %>
<% end %>

当我提交表单时,它显示uninitialized constant NicknamesController。

谁能告诉我问题出在哪里?

【问题讨论】:

  • 你的控制器类名是什么?

标签: ruby-on-rails ruby model-view-controller controller


【解决方案1】:

控制器名称必须是复数形式。

nicknames_controller.rb

class NicknamesController < ApplicationController

【讨论】:

  • 是的,它的 nick_names_controller.rb 。但它仍然无法正常工作。我的模型名称是nickname.rb 而不是nick_name.rb。有问题吗?
  • 你的模型叫NickName还是Nickname?因为如果是Nickname,则不需要下划线。
  • 那么控制器文件和类必须按照我的答案命名。
【解决方案2】:

您的控制器文件名应为nicknames_controller.rb 而不是nickname_controller.rb。你的控制器类名应该是NicknamesController 而不是NicknameController。

【讨论】:

  • 是的,它的 nick_names_controller.rb 。但它仍然无法正常工作
  • “nick”和“name”之间不应有下划线。请仔细阅读railsdocumentation。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-03-27
  • 2012-10-03
  • 2013-11-18
  • 2016-05-08
  • 1970-01-01
  • 2015-10-25
相关资源
最近更新 更多