4

フォームが送信されたかどうかを検出する方法はありますか?以下の例のようなカスタム検証に基づいてクラスを設定しようとしていますが、それは可能ですか?

  .control-group{ :class => ("error" if form_is_submitted ) }

今試しています:

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

フォームが送信されない場合、パラメータがnillであり、エラーがスローされるため、これは失敗します。

4

1 に答える 1

17

フォームデータが(すべてプレフィックスを持つ)nameのような属性を持つフィールドを介して送信される場合、にが存在するかどうかを確認できます。user[profile_attributes][gender] user:userparams

... if params.include?(:user)

何らかの理由(ルートからの送信など) params[:user]でリクエストに対してもすでに値が設定されている場合は、値をGET持つ特定のフォームフィールドを探すことができます。たとえば、非表示のフィールドを追加できます

<%= f.hidden_field :some_field, :value => true %>

そしてあなたの状態でそれをチェックしてください

... if params[:user].include?(:some_field)

または、リクエストがPOSTメソッド経由かどうかを確認することもできます

... if request.post?

request.put?これは、updateメソッドのように、他のメソッドでも機能します。

于 2012-08-24T00:10:11.990 に答える