form_tag
Rails 3アプリで、どのモデルにもバインドされていないフォームにを使用しています。このヘルパーにはモデルにバインドされたヘルパーと同じサニタイズの利点がないことを理解しています(間違っている場合は訂正してください)。そのform_for
ため、フォームへのすべての入力を手動でサニタイズしています。
これが私のコントローラーです(基本だけです):
include ActionView::Helpers::TextHelper
class MyController < ApplicationController
localVariable = params[:my_form_param].to_s
localVariable = strip_tags(localVariable)
localVariable = sanitize(localVariable)
end
この問題は、キリル文字やスカンジナビア文字などの文字がフォームフィールドに含まれている場合に発生します。次のメッセージが返されます。
undefined method `bytesize' for nil:NilClass
strip_tags
とメソッドに絞り込みましたが、sanitize
実際にはそれらを使用して不正な入力を削除する必要があります。to_sメソッドも各メソッドにシフトしようとしましたが(たとえばstrip_tags (localVariable.to_s)
)、運がありません-フォームが機能することを確認する唯一の方法は、これらの2行をすべてコメントアウトすることです(私が言うように、これは私がやりたくないこと)。
誰かがこれについて何か考えを持っていますか?ここではモデルを使用していないことを念頭に置いて、使用できる代替アプローチはありますか?使用form_for
すると少しやり過ぎになる可能性がありますか?
ありがとう!