2013-07-02 1 views
8

ho il seguente codice in Ruby, prendere direttamente dal Getting Started with Rails guidanon può convertire in simbolo String

def create 
    @post = Post.new(post_params) 

    @post.save 
    redirect_to @post 
end 

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

Quando eseguo quanto sopra Create ottengo il seguente errore.

non può convertire in simbolo stringa

+3

e qual è la domanda ???? –

+3

Qual è l'errore full backtrace? Fornisci più dati. –

risposta

31

Sembra che si sta tentando di utilizzare forti paramaters. Si ottiene questo errore impossibile convertire il simbolo nella stringa perché non sono stati configurati i parametri_forte. Quindi, per impostazione predefinita non puoi usare require su params con simboli.

Configurare i parametri forti come segue:

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 

vedere la documentation per ulteriori dettagli sulla configurazione.

Ora il codice dovrebbe funzionare.

+5

questo dovrebbe essere sufficiente 1.) Aggiungi gem 'strong_parameters' al tuo gemfile e raggruppalo. – d1jhoni1b

+0

@ d1jhoni1b è corretto. L'ho provato, ho dovuto solo riavviare il server per farlo funzionare dopo il raggruppamento. –

0

Aggiungi gem 'strong_parameters' al file gem e run> bundle install nel prompt dei comandi Aggiorna il browser.

+0

Benvenuti in [so]. Potresti per favore espandere la tua risposta? –

1

Se qualcuno sta usando Mongoid, è possibile risolvere questo problema aggiungendo quanto segue a un inizializzatore:

Mongoid::Document.send(:include, ActiveModel::ForbiddenAttributesProtection)