3

Railsに次のようなHTMLフォームがあります

<form name="input" action="jump">
  Title: <input type="text" name="title"> 
  <input type="button" value="Submit">
</form> 

必須フィールドになりたい(つまり、ユーザーは空白のままにできない)。Railsコントローラーtitleでそれを確認したい。これはモデルのフィールドではないことにjump注意してください。titleこれは、コントローラー内で処理されるフォームフィールドにすぎません。

どうすれば検証を行い、エラーをユーザーにエレガントに表示できますか?

4

3 に答える 3

5

アクティブモデルを使用して、次のことを処理できます。

クラスSomeModel<<ActiveModel

#some Model
attr_accessor :title
validates_presence_of :title

終わり

これの利点は、Railsに表示エラーの検証と処理をスローできることです。

もう1つの方法は、純粋にコントローラー側で処理を行うことです。

if  params[:title].present?

  ...#do something

else

  ...#do something else

ただし、これはエレガントなアプローチではありません。このルートを使用する場合は、少なくともロジックをコントローラーから移動するためのルビーオブジェクトを作成することをお勧めします。

于 2012-11-12T00:59:38.383 に答える
4

あなたは実際にHTML5技術を使ってそれに適用することができます

 <input type="text" name="usrname" required="required" />

それに加えて、gemの「クライアント側の検証」を使用できます。githubはここにあり ますhttps://github.com/bcardarella/client_side_validations

私はあなたが宝石を使うことを提案します...かなり素晴らしい:D

于 2012-11-12T03:44:27.753 に答える
3

2つのオプションがあり、フロントエンドとバックエンドで検証を行うことができます。両方を実行することをお勧めします。

フロントエンド

<%= f.text_field ..other attributes... required: true %>

バックエンド

もう一度2つのオプションがあります

あなたのモデルで

validates :title, :presence

または、コントローラーでこれを確認できます

if  params[:title].present?
    #your logic
end
于 2016-03-24T15:04:05.633 に答える