2011-04-12 105 views
2

(ruby 1.9.2 rails 3.0.6)为什么form_for对我不起作用

我是ROR的新手,对不起我的简单问题。

我有一个表格和控制器,当我启动我的应用程序,我可以看到该日志已显示。不过也有例外渲染视图...

一切都应该蛮好看的..问题是什么?我该如何解决它?

谢谢。

undefined method `users_path' for #<#<Class:0x47c7678>:0x47c6118> 
Extracted source (around line #2): 

1: <h1>Welcome Aboard</h1> 
2: <%= form_for(@user) do |f| %> 
3: <table> 
4:  <tr> 
5:  <td><%= f.label :username %></td> 

class RegisterController < ApplicationController 

    def sign_up 
    logger.debug("sign_up inoked") 

    @user = User.new 

    logger.debug("sign_up finished") 
    end 

end 

的意见/注册/ sign_up.html.erb

<%= form_for(@user) do |f| %> 
    <table> 
    <tr> 
     <td><%= f.label :username %></td> 
     <td><%= f.text_field :username %></td> 
    </tr> 
    <tr> 
     <td><%= f.label :password %></td> 
     <td><%= f.password_field :password %></td> 
    </tr> 
    <tr> 
     <td><%= f.label :password_confirmation %></td> 
     <td><%= f.password_field :password_confirmation %></td> 
    </tr> 
    <tr> 
     <td colspan="2"></td> 
    </tr> 
    <tr> 
     <td colspan="2"><%= f.submit "Sign up" %></td> 
    </tr> 
    </table> 
<% end %> 

回答

9

看来你没有相应的路由。你有这样一行:

resources :users 

在你的routes.rb文件中?如果不尝试添加,请。或者只是创建名为route的特定users_path。

+0

添加资源后:用户。它正在工作。 但为什么我需要将我的模型添加到路线? – jojo 2011-04-12 07:19:47

+0

form_for默认查找resource_path(你的情况下是@users),所以users_path。这是RESTful的方式。这条路线不存在,你得到一个错误。如果你想指定另一条路线,你可以使用“form_for @user,:url => your_custom_path”,但它必须是某种东西。 – Spyros 2011-04-12 07:37:36

+0

是的,当你认为轨道是JUST模型,视图控制器时有点令人困惑......但是一个路线也是工作所需要的。我猜“模型,视图,路线,控制器”并不轻松。 – Jenny 2011-04-25 18:48:58