不同页面上的条件验证 - Rails

时间:2012-09-21 03:45:01

标签: ruby-on-rails ruby ruby-on-rails-3

一个快速的Rails问题,我希望你们的帮助。一直在四处寻找答案,对于我认为解决方案而言,更复杂的一面似乎有所不同。我有两个页面使用模型(用户)和每个页面上的表单,在保存时更新不同的属性。

  • 更新密码详细信息(验证是否存在密码)

  • 更新测验的响应(验证最多300个字符)

如何进行条件验证,以便在我提交表单时,验证会显示在各自的页面上?我需要两个单独的动作吗?如何将这些操作链接到表单提交?

以下是通用更新操作和表单:

用户控制器

def update
  @user = User.find(params[:id])
  if @user.update_attributes(params[:user])
    flash[:success] = "All is updated"
    sign_in @user
    redirect_to @user
  else
    render 'edit'
  end
end

表格

<p><h3>Linked-In Optimization</h3></p>
<%= form_for(@user) do |form| %>
  <p><%= form.label :linkedin, 'Please copy and paste your Linked-In profile here (575  chars max.)' %></p>
  <p><%= form.text_area :linkedin %></p>
  <%= form.submit 'Save' %>
  <img class="linkedin" src="/linkedin.png">
<% end %>

1 个答案:

答案 0 :(得分:0)

为了简化操作,请使用两个单独的控制器操作。

要将表单提交链接到新路径,请执行此操作

<%= form_for(@user, :url => update_password_user_path(@user)) do |f| %>

如果您在模型中添加了必要的验证,则错误消息将显示在您的相应表单上。