检测是否在轨道上提交了带有红宝石的表单?

Rub*_*tic 4 forms submit ruby-on-rails-3

有没有办法检测表单是否已提交?我试图基于自定义验证设置类,如下例所示,这可能吗?

  .control-group{ :class => ("error" if form_is_submitted ) }
Run Code Online (Sandbox Code Playgroud)

现在尝试:

  .control-group{ :class => ("error" if params[:user][:profile_attributes][:gender] == nil) }
Run Code Online (Sandbox Code Playgroud)

如果表单未提交,则会失败,因为params是nill并抛出错误

dee*_*our 16

如果您的表单数据是通过具有(所有具有前缀)name属性的字段提交的,则可以检查是否存在.user[profile_attributes][gender] user:userparams

... if params.include?(:user)
Run Code Online (Sandbox Code Playgroud)

如果出于某种原因(如来自路线) params[:user]已经具有即使对于GET请求的值,您也可以查找具有值的特定表单字段.例如,您可以添加隐藏字段

<%= f.hidden_field :some_field, :value => true %>
Run Code Online (Sandbox Code Playgroud)

并在你的条件检查

... if params[:user].include?(:some_field)
Run Code Online (Sandbox Code Playgroud)

您也可以通过该POST方法检查请求是否是

... if request.post?
Run Code Online (Sandbox Code Playgroud)

这适用于其他方法,例如request.put?更新方法.