0

我有一个在 home.html.erb 加载并由页面控制器控制的页面。

在页面中,我有一个表单,它是一个用于获取电子邮件地址的字段。

我得到的错误是:

undefined method `signups_path'

这是我的代码供您参考,我不确定如何准确定义路线的去向。

Home.html.erb 包含这种形式:

    <%= form_for(@signup) do |f| %>
        <div class="field">
            <%= f.label :email %><br />
            <%= f.text_field :email %>
        </div>

        <div class="actions">
            <%= f.submit "Enter" %>
        </div>
    <% end %>

Pages控制器包含:

class PagesController < ApplicationController

  def home
    @title = "Open Domain - Liberate your domains from obscurity"
    @signup = Signup.new
  end

end

Signup控制器包含:

class SignupController < ApplicationController

  def show
    @signup = Signup.new
  end

  def new
  end

  def create
    @signup = Signup.new(params[:signup])
    if @signup.save
    else
      render 'new'
    end
  end

end

signup模型包含:

类注册 < ActiveRecord::Base

  attr_accessible :email

  email_regex = /\A[\w+\-.]+@[a-z\d\-.]+\.[a-z]+\z/i

  validates(:email, :presence => true,
                    :length => {:maximum => 40},
                    :format => {:with => email_regex})

end

任何帮助将不胜感激。我觉得这是一个小问题,我是一个初级开发人员。谢谢!

4

2 回答 2

1

form_for(@signup) 正在尝试构建一个 POST 到的路由。如果您的 routes.rb 中没有命名路由,您将收到此错误。尝试:

路线.rb

 post '/signup', :to=>"signup#create", :as=>"signups"

这基本上是说:当请求到 '/signup' 路径的 POST 时,将其路由到注册控制器中的创建操作。此外,使该路径的帮助器可使用名称访问:“signups_path”

于 2012-05-05T02:30:46.640 回答
1

你可以用这个替换你的 form_for 标签:

<%= form_for @signup, :url => { :action => "create" } do |f| %>

这会将其发布到“注册/创建”。

于 2012-05-05T02:37:30.207 回答