2012-05-05 144 views
3

我目前正在嘗試構建一個簡單的表單,它將一個電子郵件地址作爲登錄頁面的一部分存入數據庫。表格爲home.html.erb,由pages控制器控制。模板缺少註冊/創建,應用程序/創建

,我發現了以下錯誤:

Missing template signup/create, application/create with {:locale=>[:en], :formats=>[:html], :handlers=>[:erb, :builder, :coffee]}. Searched in: * "/Users/me/rails_projects/this_project/app/views"

這裏是我的代碼:

home.html.erb有:

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

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

Pages控制器具有:

class PagesController < ApplicationController 

    def home 
    @title = "Title of my site" 
    @signup = Signup.new 
    end 

end 

Signups控制器具有:

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模式有:

class Signup < ActiveRecord::Base 

    attr_accessible :email 

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

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

end 

我不知道什麼是錯的,但是當我在字段中輸入一個有效的電子郵件地址,這是我收到的錯誤。我一直搜索到無濟於事。非常感謝您的幫助。

回答

3

這是告訴你,一個模板丟失。

通常情況下,默認情況下(如果您不打電話render()redirect_to())Rails會呈現與您的操作相關的視圖,因此您的情況爲:create.html.erb

因此,如果您成功創建用戶,您應該重定向到更有意義的事情。

像:

if @signup.save 
    redirect_to :root 
else 
#... 
end 

通過我假設你已經先配置的根路徑的方式,就像這樣:

root :to => "something" 

你會重定向在有意義給用戶的應用。

+0

非常感謝Amokrane –

+0

這非常有道理。非常感謝,Amokrane。將他們重定向到註冊頁面,我的應用程序現在可以成功地接收電子郵件地址! –

+0

很高興幫助,扎克:) –