0

Railsでフォームを保存しようとしていますが、これは単純なもので、スペースを含む名前を送信しようとするたびに(john smithのように)、実際にはエラーが発生せず、成功を返しますが、何も保存しません。ジョンスミスを試してみてください。

私は自分のモデルをチェックし、これを持っています

  validates :first_name, :allow_blank => true, :format => { :with => /\A[a-zA-Z]+\z/, :message => "Only letters allowed" }

文字のみを検証しますが、スペースを受け入れますが、試しても成功しません。

私のコントローラーでは、このようなものがあります。

name = params[:name].to_s

以降

@user.atributes = { :weight => weight, :name => name ... and so on

最後に私は@user.save

この問題を回避する方法はありますか? 名前にスペースを入れたいのですが、セキュリティ上の問題はありません。

ありがとう

私のコンソールでの投稿の結果

Started POST "/users/custom" for 192.168.1.21 at 2013-05-21 17:51:06 -0600
Processing by UsersController#custom as JS
  Parameters: {"name"=>"  new user", "lastname"=>" my last name", "mail"=>"newuser@gmail.com", "sex"=>"0" ... n so on}
  User Load (0.1ms)  SELECT `users`.* FROM `users` WHERE `users`.`id` = 6 LIMIT 1
   (0.1ms)  BEGIN
   (0.3ms)  UPDATE `users` SET `first_name` = ' new user', `ssn` = 0, `updated_at` = '2013-05-21 23:51:06' WHERE `users`.`id` = 6
   (1.2ms)  COMMIT
  Rendered users/custom.html.erb within layouts/application (0.1ms)
Completed 200 OK in 16ms (Views: 11.0ms | ActiveRecord: 1.7ms)
4

2 に答える 2

3

あなたの正規表現は間違っています。文字のみを受け入れています。空白は文字ではありません。次のようなことを試してください:\A[a-zA-Z,\s]+\z

ところで、正規表現をテストする必要がある場合、 rubular は非常に優れたツールです。

http://rubular.com/

于 2013-05-21T22:05:43.210 に答える