Ruby onRailsのフォームに少なくとも1つのフィールドが存在することを検証する方法

JuanM。

複数の列を含む検索モデルがあります。これらの列は、の共通form_for @search do |s|埋められますapp/views/searchings/index.html.erbつまり、そのビューに3つのフィールドがあり、それぞれが独自のチェックボックスでアクティブになっているということです。少なくとも1つのフィールドの存在を検証したいと思います。検証なしでテストしました。入力フィールドが無効になっている場合、その値はnilです。コードは次のとおりです。

app / models / searching.rb

  class Searching < ActiveRecord::Base
      belongs_to :user

      validate :capacidad_num
      validate :has_a_field

      def has_a_field
        arr = [self.tipo?, self.capacidad?, self.ubicacion_cont?, self.free_to?, self.free_from?]
        if !arr.include?(true)
          self.errors.add(:base, 'Debes ingresar al menos one parameter de búsqueda')
        end
      end

      def capacidad_num
        if self.capacidad?
          if !(self.capacidad.to_i != 0)
            self.error.add(:capacidad, 'tiene que ser un número')
          end
        end
      end

  end

app / controllers / searchings_controller.rb

class SearchingsController < ApplicationController
    before_action :get_search, only: [:show]

    def index

      @couches = Couch.all
      @tipos = Tipoc.all
      @search = Searching.new

    end

    def show
      #...show stuff not important
    end


    def create
      @search = Searching.new(params.permit(:tipo, :ubicacion_cont, :capacidad))

      respond_to do |format|
        if @search.save
          format.html { redirect_to @search, notice: "Mostrando resultados de búsqueda" }
          format.json { render :show, status: :created, location: @search }
        else
          format.html { render :index }
          format.json { render json: @search.errors, status: :unprocessable_entity }
        end
     end
   end

   private
   def get_search
     @search = Searching.find(params[:id])
   end

end

それが役立つ場合は、このモデルのスキーマを次に示します。

create_table "searchings", force: :cascade do |t|
 t.integer  "tipo"
 t.string   "ubicacion_cont"
 t.integer  "capacidad"
 t.date     "free_from"
 t.date     "free_to"
 t.datetime "created_at",       null: false
 t.datetime "updated_at",       null: false
end

各フィールドのブール値を含む配列を使用して、少なくとも1つのフィールドの存在を確認しようとしましたが、機能していないようです。フォームに値を入力するたびにエラーが発生します。

JuanM。

私は解決策への別のアプローチを得て、うまくいきました。内部のコントローラーでdef createparams[:searching]がゼロかどうかを確認します。その場合は、アラートのメッセージを表示します。

def create

  if params[:searching].nil?

    redirect_to new_searching_path, alert: 'Debes ingresar al menos un parámetro'

  else

    #do the new and save stuff

  end

end

私はbyebug自分の中で受け取っていたものを使用して確認した後、このソリューションparams行き着きましたdef createRailsプログラミングの良い習慣ではないことは知っていますが、私が望むのは、それが魅力のように機能することです。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Ruby onRails特定のフィールドにエラーが存在する

分類Dev

Ruby 日付/時刻が少なくとも 24 時間以内であることを検証する方法は?

分類Dev

入力する少なくとも1つのフィールド、重力フォームを検証します

分類Dev

RailsでフォームRubyを送信するときにフォームフィールドの一部を更新する方法

分類Dev

Ruby onRails- / app / assets / imagesのフォームから画像を保存することは可能ですか?

分類Dev

Ruby onRails-モデルのフィールドを別のモデルのフォームに追加します

分類Dev

Codeigniterフォームの検証-少なくとも1つのフィールドが必要です

分類Dev

Ruby onRailsでフォームヘルパーを使用する際の問題

分類Dev

Ruby on Rails:フォームの最初の引数にnilを含めることも、空にすることもできません

分類Dev

Ruby onRailsでネストされたフォームフィールドの最初のインスタンスに自動入力する

分類Dev

Ruby onRails-あるモデルのフォームデータを別のモデルとの関係で保存する

分類Dev

日とユーザーごとにグループ化されたフィード(以下)を作成します。これは、Ruby onRailsで最新のものから注文されたものです。

分類Dev

リアクティブフォームを使用してAngular7で「少なくとも1つのフィールドに入力する必要がある」検証を設定するにはどうすればよいですか?

分類Dev

Yii REST Updateでは、フォームモデルの検証に少なくとも1つのフィールドが必要です

分類Dev

Ruby onRails-HTTPSと基本認証を介してリモートファイルを保存する方法

分類Dev

Ruby onRailsフォームで子の関連付けを更新する

分類Dev

Ruby Win32レジストリ:存在しないレジストリキーを検索するときに、システムが指定されたファイルを見つけることができません

分類Dev

Ruby onRailsフォームで「取得」する方法

分類Dev

Hibernate検証アノテーション-少なくとも1つのフィールドがnullでないことを検証します

分類Dev

フォームフィールドで少なくとも1つの値が変更されるまで検証が機能しない状態でフォームを更新します-Angular-ReactiveForms

分類Dev

Dojo データグリッドに少なくとも 1 つの行があることを検証する

分類Dev

画像が存在しない場合にデフォルトのユーザー画像を表示するには(Ruby on Rails)

分類Dev

Ruby onRailsを介したフォーム送信でjson応答を取得する方法

分類Dev

Ruby onRailsから最新のレコードを取得する方法には多くの関係があります

分類Dev

Ruby onRails-エラー後も選択した画像をフォームに保持する

分類Dev

Rubyで検索フィルターで大文字と小文字を区別しないようにする方法

分類Dev

相互検証を使用する場合、各フォールドに真のクラスのインスタンスが少なくともいくつか含まれていることを確認する方法はありますか?

分類Dev

php / mysql。少なくとも1つのmysql行フィールドに少なくとも2つの特定の単語が存在するかどうかを検出するmysql関数はありますか

分類Dev

2つのフィールドのうち少なくとも1つは検証を完了する必要があります

Related 関連記事

  1. 1

    Ruby onRails特定のフィールドにエラーが存在する

  2. 2

    Ruby 日付/時刻が少なくとも 24 時間以内であることを検証する方法は?

  3. 3

    入力する少なくとも1つのフィールド、重力フォームを検証します

  4. 4

    RailsでフォームRubyを送信するときにフォームフィールドの一部を更新する方法

  5. 5

    Ruby onRails- / app / assets / imagesのフォームから画像を保存することは可能ですか?

  6. 6

    Ruby onRails-モデルのフィールドを別のモデルのフォームに追加します

  7. 7

    Codeigniterフォームの検証-少なくとも1つのフィールドが必要です

  8. 8

    Ruby onRailsでフォームヘルパーを使用する際の問題

  9. 9

    Ruby on Rails:フォームの最初の引数にnilを含めることも、空にすることもできません

  10. 10

    Ruby onRailsでネストされたフォームフィールドの最初のインスタンスに自動入力する

  11. 11

    Ruby onRails-あるモデルのフォームデータを別のモデルとの関係で保存する

  12. 12

    日とユーザーごとにグループ化されたフィード(以下)を作成します。これは、Ruby onRailsで最新のものから注文されたものです。

  13. 13

    リアクティブフォームを使用してAngular7で「少なくとも1つのフィールドに入力する必要がある」検証を設定するにはどうすればよいですか?

  14. 14

    Yii REST Updateでは、フォームモデルの検証に少なくとも1つのフィールドが必要です

  15. 15

    Ruby onRails-HTTPSと基本認証を介してリモートファイルを保存する方法

  16. 16

    Ruby onRailsフォームで子の関連付けを更新する

  17. 17

    Ruby Win32レジストリ:存在しないレジストリキーを検索するときに、システムが指定されたファイルを見つけることができません

  18. 18

    Ruby onRailsフォームで「取得」する方法

  19. 19

    Hibernate検証アノテーション-少なくとも1つのフィールドがnullでないことを検証します

  20. 20

    フォームフィールドで少なくとも1つの値が変更されるまで検証が機能しない状態でフォームを更新します-Angular-ReactiveForms

  21. 21

    Dojo データグリッドに少なくとも 1 つの行があることを検証する

  22. 22

    画像が存在しない場合にデフォルトのユーザー画像を表示するには(Ruby on Rails)

  23. 23

    Ruby onRailsを介したフォーム送信でjson応答を取得する方法

  24. 24

    Ruby onRailsから最新のレコードを取得する方法には多くの関係があります

  25. 25

    Ruby onRails-エラー後も選択した画像をフォームに保持する

  26. 26

    Rubyで検索フィルターで大文字と小文字を区別しないようにする方法

  27. 27

    相互検証を使用する場合、各フォールドに真のクラスのインスタンスが少なくともいくつか含まれていることを確認する方法はありますか?

  28. 28

    php / mysql。少なくとも1つのmysql行フィールドに少なくとも2つの特定の単語が存在するかどうかを検出するmysql関数はありますか

  29. 29

    2つのフィールドのうち少なくとも1つは検証を完了する必要があります

ホットタグ

アーカイブ