为什么此表单不能从模型中获取数据?

为什么此表单不能从模型中获取数据?

问题描述:

我想要使用这种形式捕获电子邮件地址:为什么此表单不能从模型中获取数据?

我决定为此创建一个模型,并将视图和控制器用于仅服务于静态资产的不同模型(想想:简报注册)。

<%= form_for (@signup) do |f| %> 
<% if @signup.errors.any? %> 
    <div id="error_explanation"> 
    <p><%= pluralize(@signup.errors.count, "error") %> prohibited this post from being saved:</p> 

    <ul> 
    <% @signup.errors.full_messages.each do |user| %> 
    <li><%= user %></li> 
    <% end %> 
    </ul> 
    </div> 
<% end %> 

<div class="field"> 
    <%= f.label :email_address %><br /> 
    <%= f.email_field_tag :email_address %> 
</div> 

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

如何获得这种形式的工作?我得到undefined method signups_path for #<#<Class:0x00000004f1feb0>:0x00000004f09a98>异常,这是可以理解的(它按照惯例寻找SignupsController)。

但我希望窗体显示在一个单独的控制器中,我称之为PagesController并将其发送到注册模型。

附加信息:

我试图通过网址:pages_path形式,并得到同样的异常。

# view inside PagesController 
<div class="four columns"> 
    <%= render 'form' %> 
</div> 

#stub of model 
class PagesController < ApplicationController 
def index 
    @signup = Signup.new 
end 

def create 
@signup = Signup.new(params[:signup]) 
end 
end 
+0

你设置的路线?将它们添加到问题中+请使用'url:pages_path'更新表单 – Damien 2012-02-01 19:26:38

+0

您能否为SignUp显示您的类定义?我认为它需要ActiveModel – Webjedi 2012-02-01 19:30:00

+0

+改变'f.email_field_tag'为'f.email_field' +保存'@ signup'在PagesController#create和'redirect_to'某处 – Damien 2012-02-01 19:31:19

尝试:

<%= form_for @sighup, :url => {:controller => :pages, :action => :index} do |f| %> 

,我希望你没有忘记

<% end %> 
+0

谢谢!按预期工作。 – rhodee 2012-02-01 20:17:35