我有一个看似非标准的注册过程:
[欢迎!输入您的电子邮件和密码] => [很酷,输入更多信息] => [注册]
我无法让rails知道我只想验证第1页上的电子邮件和密码,以及第2页上的所有其他内容。
当用户点击网站时,他们会看到我的欢迎页面:
class WelcomeController < ApplicationController
def index
@user = User.new
end
end
<%= form_for(@user) do %>
<div class="formItem">
<%= label_tag(:email, "Your email address:") %>
<%= text_field(:user, :email) %>
<br clear="all" />
</div>
<div class="formItem">
<%= label_tag(:password, "Select a password:") %>
<%= password_field_tag(:password) %>
<br clear="all" />
</div>
<%= submit_tag("Sign up today - it's free and easy!", :class => "submitForm") %>
<% end %>
=
class UsersController < ApplicationController
def create
@user = User.new(params[:user])
if @user.save
redirect_to(edit_user_path(@user, :noticeHeader => true ), :notice => 'Please take a minute and answer these additional questions.')
else
render :action => "welcome/index"
end
end
=
点击“注册”后,他们会看到我的下一页表单字段。
我遇到的问题是我在用户模型中的两个页面上验证了_presence_of个字段。由于这些字段不在欢迎页面上,因此在提交欢迎页面时出现“未定义的局部变量或方法”错误。例如,我 validates_presence_of:title 因为我希望标题是必需的,但它仅在第2页列出,因此第1页无法正确验证。
关于如何处理这个的想法?
感谢。
答案 0 :(得分:0)
查看其中一个插件/ gem,您可以在其中创建基于向导的表单。 http://ruby-toolbox.com/categories/rails_wizards.html我最喜欢的是“ActsAsWizard”