2013-07-01 17 views
5

Stavo provando Ruby on Rails con il tutorial Getting Started with Rails. Ho seguito tutti i passaggi ma continuo a ricevere l'errore TypeError in PostsController # create.TypeError in Getting Started with Rails tutorial

Ciò accade quando sono al passaggio 5.6 Salvataggio dei dati nel controller.

mio PostsController.rb si presenta così:

class PostsController < ApplicationController 

    def new 
    end 

    def create 
    @post = Post.new(post_params) 

    @post.save 
    redirect_to @post 
    end 

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

e sono a localhost: 3000/messaggi/new. Sto chiedendo un post e viene a mancare con il seguente:

non può convertire in simbolo String

app/controllers/posts_controller.rb:15:in `post_params' 
app/controllers/posts_controller.rb:7:in `create' 

si è verificato questo errore durante il caricamento dei seguenti file: inviare

È possibile trovare tutto il mio codice su my GitHub repo.

Aiutateci :(

+0

Benvenuti a StackOverflow! Per una risposta più rapida, è meglio postare tutte le sezioni di codice pertinenti nel tuo post. – claptimes

+0

Awh, c'è un tutorial separato specialmente per Rails 3.2.xx. Seguire quei passaggi lo risolve. http://guides.rubyonrails.org/v3.2.13/getting_started.html –

risposta

7

Si utilizza rotaie versione 3.2.xx, sulla versione rotaie 3.2.xx non include strong_parameters gemma

Nota che post_params def è privata. Questo nuovo approccio impedisce una malintenzionato di impostazione degli attributi del modello manipolando l'hash passato al modello. per ulteriori informazioni, fare riferimento a questo post del blog su Strong Parameters.


  1. Aggiungi gem "strong_parameters" al Gemfile, quindi eseguire bundle install

  2. includono ActiveModel::ForbiddenAttributesProtection del modello o creare config/initializers/strong_parameters.rb e mettere questo:

    ActiveRecord::Base.send(:include, ActiveModel::ForbiddenAttributesProtection))

  3. config.active_record.whitelist_attributes = false in config/application.rb

https://github.com/rails/strong_parameters