0

在 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

这是我收到的错误消息:

用户控制器中的 NoMethodError#create

用于#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'

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

4

2 回答 2

0

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


于 2012-10-06T03:34:27.563 回答
0

检查您的app/models/user.rb

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

旁注- 这个话题可能应该很快关闭,因为它与 Rails 3.2 相关,并且可能与 Rails 4 不太相关。我对 Rails 4 太陌生,无法对此有充分的意见。

于 2013-05-06T07:55:22.827 回答