2013-07-01 4 views
5

Я просто пытался запустить Ruby on Rails с помощью учебника Getting Started with Rails. Я выполнил все шаги, но я продолжаю получать ошибку TypeError в PostsController # create.TypeError в Getting Started with Rails tutorial

Это происходит, когда я на шаге 5.6 Сохранение данных в контроллере.

Мой PostsController.rb выглядит следующим образом:

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 

и я нахожусь на локальном хосте: 3000/сообщений/новый. Я запрос POST и выдает следующее:

не может преобразовать символ в строку

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

Эта ошибка возникает при загрузке следующих файлов: размещать

Вы можете найти все мой код на my GitHub repo.

Пожалуйста, помогите :(

+0

Добро пожаловать в StackOverflow! Для более быстрого ответа лучше разместить все соответствующие разделы кода в своем сообщении. – claptimes

+0

Awh, есть отдельный учебник, особенно для Rails 3.2.xx. Следуя этим шагам, решает. http://guides.rubyonrails.org/v3.2.13/getting_started.html –

ответ

7

Вы используете рельсы версию 3.2.xx, на версии рельсов 3.2.xx не включает strong_parameters Gem

Обратите внимание, что Защита post_params является частным. Этот новый подход предотвращает атакующий от установки атрибутов модели, манипулируя хэш передается модели. для получения более подробной информации, обратитесь к этому сообщению в блоге о Strong Parameters.


  1. Добавить gem "strong_parameters" в ваш Gemfile, а затем запустить bundle install

  2. включают ActiveModel::ForbiddenAttributesProtection на вашей модели или создавать config/initializers/strong_parameters.rb и поставить этот:

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

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

https://github.com/rails/strong_parameters