2013-07-02 14 views
8

にシンボルを変換することはできません、私は上記のCreateを実行すると、私は次のエラーを取得する私はRubyで、次のコードを持つ文字列

def create 
    @post = Post.new(post_params) 

    @post.save 
    redirect_to @post 
end 

private 
    def post_params 
    params.require(:post).permit(:title, :text) 
    end 

Getting Started with Railsガイドから直接取ります。

あなたは強いPARAMATERSを使用しようとしているように思えた文字列

+3

と何の問題だ???? –

+3

エラーフルバックトレースとは何ですか?より多くのデータを提供する。 –

答えて

31

にシンボルを変換することはできません。このエラーが発生するstrong_parametersを設定していないため、シンボルを文字列に変換できません。だから、デフォルトではシンボルでparamsにrequireを使うことはできません。

設定強いパラメータを次のように

1.) Add gem 'strong_parameters' to your gemfile and bundle it. 
2.) Include Restrictions to you model as follows. 
     include ActiveModel::ForbiddenAttributesProtection to your model. 
3.) Disable white listing in application confiuration(config/application.rb) 
    config.active_record.whitelist_attributes = false 

の設定の詳細についてはdocumentationを参照してください。

これでコードが機能します。

+5

これで十分でしょう)1. gemfileに 'gemfile'に 'strong_parameters'を追加してバンドルします。 – d1jhoni1b

+0

@ d1jhoni1bが正しいです。私はそれをテストしました、バンドル後に動作させるためにサーバを再起動しなければなりませんでした。 –

0

gemファイルに 'strong_parameters'を追加し、コマンドプロンプトで run> bundle installを追加してください。 ブラウザを更新してください。

+0

ようこそ[so]。あなたは答えを拡大してください。 –

1

誰もがMongoidを使用している場合は、初期化子に以下を追加することでこの問題を修正することができます

Mongoid::Document.send(:include, ActiveModel::ForbiddenAttributesProtection) 
関連する問題