UsersController中的NoMethodError #create

时间:2012-10-06 02:54:26

标签: ruby-on-rails methods nomethoderror

在Michael Hart的Ruby on 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中的NoMethodError #create

     

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

     

应用程序跟踪|框架跟踪|完整追踪   app / controllers / users_controller.rb:18:在'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'

我无法找到哪条路是正确的。 干杯

2 个答案:

答案 0 :(得分:0)

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



答案 1 :(得分:0)

检查 app / models / user.rb

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

旁注 - 这个主题可能很快就会关闭,因为这与Rails 3.2有关,在Rails 4中可能不太相关。我对Rails 4来说太新了对此的意见。