【问题标题】:NoMethodError in UsersController#create用户控制器中的 NoMethodError#create
【发布时间】:2012-09-27 04:51:01
【问题描述】:

我在 Michael Hart 的 Ruby on Rails 教程中注册新用户时遇到了一个错误。我是 Rails 的新手,但我一直在寻找几个小时,似乎找不到任何东西来解决这个问题。我最初的想法是它特定于以下行:

redirect_to @user

这是我的 users_controller.rb

文件
#!/bin/env ruby
# encoding: utf-8

class UsersController < ApplicationController

def show
    @user = User.find(params[:id])
end

def new
  @user = User.new
end

def create
    @user = User.new(params[:user])
    if @user.save
        flash[:success] = "Welcome to the Sample App!"
        redirect_to @user
    else
        render 'new'
    end
end
end

这是我收到的错误消息:

UsersController#create 中的 NoMethodError

#Rails.root 的未定义方法 `': /Users/mikedeverna/Documents/rails_projects/sample_app

应用程序跟踪 |框架跟踪 |全跟踪 app/controllers/users_controller.rb:18:in `create'

这是我的routes.rb 文件中的代码:

SampleApp::Application.routes.draw do
resources :users
resources :sessions, only: [:new, :create, :destroy] 
root to: 'static_pages#home'
match '/signup',  to: 'users#new'
match '/signin', to: 'sessions#new'
match '/signout', to: 'sessions#destroy', via: :delete
match '/help',    to: 'static_pages#help'
match '/about',   to: 'static_pages#about'
match '/contact', to: 'static_pages#contact'

我无法找到正确的路径。 干杯

【问题讨论】:

  • 请通过rake routes检查资源:用户路径。这将帮助您了解哪些路线适用于哪种方法。请记住,创建方法将为您发布方法
  • 为什么用户控制器中有以下几行? #!/bin/env ruby​​ # 编码:utf-8

标签: ruby-on-rails methods nomethoderror


【解决方案1】:

检查您的 app/models/user.rb

这听起来可能出乎意料,但是如果你的模型中有错误(例如对象方法的验证),那么创建具有适当属性的对象将失败,并在运行代码时导致无方法错误:
if @foo.save

旁注 - 这个话题可能应该很快结束,因为它与 Rails 3.2 相关,并且可能与 Rails 4 不太相关。我对 Rails 4 太陌生了,不能好好学习- 对此的知情意见。

【讨论】:

    【解决方案2】:

    您的代码中似乎粘贴了一些奇怪的东西。你是正确的哪一行导致了问题,但它不是重定向语句。就是它前面的这个奇怪的字符串:

    
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多