3

Rails 4 では、通常、次のコードでプライベート関数を宣言することにより、フォームが送信されるときに特定のパラメーターのみを許可します。

params.require(:object).permit(:name, :email, :phone)

ただし、form_for の代わりに form_tag を使用しているため、各フィールドは params ハッシュで送信されます。私は ruby​​/rails の専門家ではないので、これらのパラメーターを効率的に許可する最良の方法は何ですか?

これは正しいですか?

params.require(:params).permit(:name, :email, :phone)
4

2 に答える 2

1

Lichtamberg が提案したように行を変更できparams.permitますが、実装によっては、他のルート (特に RESTful ルート) を壊す可能性があります。これがこのように動作する唯一のページである場合 ( を使用)、次のように、変数の名前を渡すことでform_tag、通常のフォームの構造に一致するようにフォーム入力を変更することができます。form_for

<%= label_tag :object, :name %>
<%= text_field_tag :object, :name %>

これにより、次のようなパラメーター マップが生成されます。

{
    :object => {
        :name => "tommyd456",
        :email => "bla@bla.com"
        ...etc ...etc

params.require(:object)これは、元の行に完全に有効です。

詳細については、Rails ドキュメントのこのリンクを参照してください。

于 2013-09-12T15:07:55.537 に答える