2013-07-02 36 views
8

Tôi có đoạn code sau trong Ruby, lấy trực tiếp từ hướng dẫn Getting Started with Railskhông thể chuyển đổi Symbol vào Chuỗi

def create 
    @post = Post.new(post_params) 

    @post.save 
    redirect_to @post 
end 

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

Khi tôi chạy trên Create tôi nhận được lỗi sau.

không thể chuyển đổi Symbol vào chuỗi

+3

và câu hỏi là những gì ???? –

+3

Lỗi đầy đủ của backtrace là gì? Cung cấp thêm dữ liệu. –

Trả lời

31

Nó có vẻ như bạn đang cố gắng sử dụng paramaters mạnh. Bạn nhận được lỗi này không thể chuyển đổi ký hiệu thành chuỗi vì bạn chưa định cấu hình strong_parameters. Vì vậy, theo mặc định, bạn không thể sử dụng yêu cầu trên params với các biểu tượng.

Cấu hình các thông số mạnh mẽ như sau:

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 

Xem documentation để biết thêm chi tiết về cấu hình.

Bây giờ mã của bạn sẽ hoạt động.

+5

điều này là đủ 1.) Thêm gem 'strong_parameters' vào gemfile của bạn và gói nó lại. – d1jhoni1b

+0

@ d1jhoni1b là chính xác. Tôi đã thử nghiệm nó, chỉ cần khởi động lại máy chủ để làm cho nó hoạt động sau khi đóng gói. –

0

Thêm gem 'strong_parameters' vào tệp gem và run> bundle install in command prompt Làm mới trình duyệt.

+0

Chào mừng bạn đến với [so]. Bạn có thể mở rộng câu trả lời của bạn không? –

1

Nếu ai là sử dụng Mongoid, bạn có thể khắc phục vấn đề này bằng cách thêm dòng sau vào một initializer:

Mongoid::Document.send(:include, ActiveModel::ForbiddenAttributesProtection) 
Các vấn đề liên quan