我是Ruby on Rails的新手,作为我的第一个项目,我正在为我的创业公司创建一个beta注册页面。我只想将用户的电子邮件地址保存到数据库以备将来使用,我无法将任何数据保存到我的数据库中。我可以通过rails控制台添加电子邮件,但我的表单/控制器无法正常工作。怎么了?
用户模型:
class User < ActiveRecord::Base
attr_accessible :email
before_save { |user| user.email = email.downcase }
VALID_EMAIL_REGEX = /\A[\w+\-.]+@[a-z\d\-.]+\.[a-z]+\z/i
validates :email, presence: true, format: { with: VALID_EMAIL_REGEX }, uniqueness:
{case_sensitive: false }
end
用户控制器:
class UsersController < ApplicationController
def index
end
def create
User.create params[:email]
redirect_to :back, :notice => "Success!"
end
end
首页HTML:
<h1>######</h1>
<p>Welcome to #####! Give us your email address, and we'll keep you informed on our
latest happenings.
You'll also be placed on the list for our private alpha and beta testings.</p>
<%= render 'form' %>
表格部分:
<%= form_for User.new do |f| %>
<%= f.label :email %>
<%= f.text_field :email %>
<%= f.submit %>
<% end %>
谢谢!
答案 0 :(得分:3)
首先,创建params[:user]
而不是params[:email]
的用户。如果您只想要电子邮件地址,请添加params[:user][:email]
。
这是因为params是一个嵌套的哈希,看起来像这样:
params[:user] = { email: "name@example.com" }
。
其次,如果电子邮件地址未通过验证且未保存,则使用条件逻辑。
@user = User.new(params[:user])
if @user.save
redirect_to :back, :notice => "Success!"
else
# display error messages
end
或者如果你想获得详细信息:
@user = User.new(:email => params[:user][:email])
答案 1 :(得分:2)
这是错误的:
User.create params[:email]
应该是:
User.create params[:user]