ActionView :: Template :: Error(未定义的方法`emails_path'for

时间:2015-04-07 09:00:58

标签: ruby-on-rails ruby-on-rails-3 email

我在rails中制作了一个简单的电子邮件注册表单,但我遇到了这个错误。

我已经在电子邮件模型中生成了只有电子邮件字段的控制器电子邮件和模型电子邮件。

这是我的控制器,方法是新的

class EmailsController < ApplicationController
 def new
  @email = Email.new
  end
end

下面是我的观点非常简单

<h2>Register Email</h2>

<% form_for(@email) do |f| %>
<div class="field">
<%= f.label :email %><br />
<%= f.text_field :email %>
 </div>
<div class="actions">
<%= f.submit "Sign up" %>
</div>
<% end %>

现在我已经使用rake路线

定义了路线

在我在控制器和html页面添加代码之前一直正常工作

在routes.rb中 我为root定义了路径

root 'emails#new'

我的佣金路线看起来像这样

       emails_new GET    /emails/new(.:format)             emails#new
       home_index GET    /home/index(.:format)             home#index
       root GET    /                                 emails#new

现在我收到此错误

   ActionView::Template::Error (undefined method `emails_path' for   #<#<Class:0x007f25edc36a58>:0x007f25edc4ffa8>):
  App 4103 stderr:     1: <h2>Register Email</h2>
   App 4103 stderr:     2: 
App 4103 stderr:     3: <% form_for(@email) do |f| %>
App 4103 stderr:     4:   <div class="field">
App 4103 stderr:     5:     <%= f.label :email %><br />
App 4103 stderr:     6:     <%= f.text_field :email %>
App 4103 stderr:   app/views/emails/new.html.erb:3:in `_app_views_emails_new_html_erb___4438819380742713977_69900439838140'

任何帮助谢谢

2 个答案:

答案 0 :(得分:2)

抱歉,我无法发表评论。您在form_for中缺少=

必须是<%= form_for ...%>

希望得到这个帮助。

答案 1 :(得分:0)

您没有实际创建email记录的路线。您可以使用resources

resources :emails, only: [:new, :create] # <-- list of actions you need

此外,当然,您应该使用form_for添加<%=来电,以便将此调用的结果放入HTML中。