2012-05-05 3 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 

Я не уверен, что это неправильно, но когда я введите действительный адрес электронной почты в поле, это ошибка я получаю. Я googled вокруг безрезультатно. Ваша помощь будет чрезвычайно оценена.

ответ

3

Сообщается, что шаблон отсутствует.

Как правило, по умолчанию (если вы не вызываете render() или redirect_to()) Rails отображает представление, связанное с вашим действием, поэтому в вашем случае это будет: create.html.erb.

Таким образом, вы должны перенаправить на то, что имеет смысл, если вы создадите пользователя успешно.

Как:

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

Кстати я предполагаю, что вы настроили корневой путь первый, как это:

root :to => "something" 

Вы перенаправлять пользователя, где это имеет смысл для вашего заявление.

+0

Большое спасибо Amokrane –

+0

Это имеет смысл. Большое спасибо, Amokrane. Перенесив их обратно на страницу регистрации, мое приложение теперь успешно использует адреса электронной почты! –

+0

Рад, что это помогло, Зак :) –