web-dev-qa-db-ja.com

RoRのテキストフィールドに最大長を設定

テキストフィールドの最大フィールド長を設定できた人はいますか

テキストフィールドの最大長を設定するにはどうすればよいですか。これはiamが使用しているコードです

<%= text_field_tag(:create_text), :input_html => {:maxlength => 15, :size => 40}  %>

フィールドに入力できる最大文字数を設定できないようです。

22
divz

これを行う方法は次のとおりです。

<%= text_field_tag 'create_text', nil, :maxlength => 15, :size => 40 %>

ソース: http://api.rubyonrails.org/classes/ActionView/Helpers/FormTagHelper.html#method-i-text_field_tag

41
M. Cypher

text_field_tag呼び出しで:

:sizeテキストボックスの物理的な長さに関係します。これは、ボックスに多くの文字が表示されるのに十分な大きさです。ただし、ユーザーはさらに入力できます。

:maxlengthは、テキストボックスの物理的なサイズに関係なく、ユーザーが入力できる最大文字数です。テキストボックスは大きくすることも小さくすることもできますが、:maxlength => 5を設定すると、5文字しか入力できなくなります。

これがデータベース内のデータに必要なハードリミットでもある場合は、検証を設定する必要があります。これにより、たとえば、Railsコード内でより多くの文字に設定することができなくなります。

validates_length_of :column_name, :maximum => 5

最後に、ベルトとサスペンダーのアプローチの場合、データベースに反するコードでさえも不正な値が設定されるのを防ぐために、データベースレベルで強制することができます。 Railsアプリ以外のコードがデータベースを更新する場合があります。これにより、この場合でも不正なデータが防止されます。

移行で列を追加するには、次のようにします。

add_column :table_name, :column_name, :string, :limit => 30
14
Dan Barron
 <%= text_field_tag :"description", '', maxlength: 5   %>
<input type="text" name="description" id="description" value="" maxlength="5">
1
vidur punj