3

私は現在、メールアドレスを受け取り、それをランディングページの一部としてデータベースに入れる単純なフォームを作成しようとしています. フォームはオンhome.html.erbで、コントローラーによって制御されpagesます。

次のエラーが表示されます。

{:locale=>[:en], :formats=>[:html], :handlers=>[:erb, :builder, :coffee]} を使用したテンプレートのサインアップ/作成、アプリケーション/作成がありません。検索場所: * "/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+\-.]+@[a-z\d\-.]+\.[a-z]+\z/i

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

end

何が問題なのかわかりませんが、フィールドに有効な電子メール アドレスを入力すると、このエラーが表示されます。私は無駄にグーグルで検索しました。どうぞよろしくお願いいたします。

4

1 に答える 1

3

テンプレートが不足していることを示しています。

通常、デフォルトでは ( render()orを呼び出さない場合redirect_to()) Rails はアクションに関連付けられたビューをレンダリングするため、この場合は次のようになりますcreate.html.erb

したがって、ユーザーの作成に成功した場合は、より意味のあるものにリダイレクトする必要があります。

お気に入り:

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

ところで、次のように最初にルート パスを構成したと仮定しています。

root :to => "something"

アプリケーションの適切な場所にユーザーをリダイレクトします。

于 2012-05-05T17:48:11.223 に答える