2016-06-20 13 views
6

Tôi sử dụng lệnh giàn giáo để tạo thành phần của mình trong ứng dụng Rails 4.Rails 4 - thông số mạnh mẽ với giàn giáo - params.fetch

Gần đây, thuật ngữ được sử dụng trong phương pháp để đặt thông số mạnh đã thay đổi từ params.require thành params.fetch và bây giờ có dấu ngoặc nhọn trong thiết lập.

private 
    # Never trust parameters from the scary internet, only allow the white list through. 
    def engagement_params 
     params.fetch(:engagement, {}) 
    end 

tôi không thể tìm thấy bất kỳ tài liệu giải thích sự thay đổi hoặc làm thế nào để sử dụng nó.

Tôi vẫn có thể viết params.fetch (: engagement) .permit (: opinion) vào lệnh tìm nạp không? Tôi không biết phải làm gì với niềng răng xoăn.

Làm cách nào để hoàn thành các thông số mạnh bằng cách sử dụng biểu thức mới này?

Trả lời

4

Tôi chưa bao giờ đi qua tình trạng này nhưng ở đây, tôi thấy các tài liệu tham khảo để fetch phương pháp

http://api.rubyonrails.org/classes/ActionController/Parameters.html#method-i-fetch

Tôi vẫn có thể viết params.fetch (: đính hôn) .permit (: Ý kiến) vào lấy lệnh?

Có, bạn vẫn có thể sử dụng

params.fetch(:engagement).permit(:attributes, :you, :want, :to, :allow) 

Tôi không biết phải làm gì với các dấu ngoặc nhọn.

Đó là một giá trị mặc định sẽ được trả lại nếu quan trọng là không có mặt hoặc nó sẽ ném ra một lỗi

params.fetch(:engagement) 
#=> *** ActionController::ParameterMissing Exception: param is missing or the value is empty: engagement 

params.fetch(:engagement, {}) 
#=> {} 

params.fetch(:engagement, 'Francesco') 
#=> 'Francesco' 

Làm thế nào để hoàn thành params mạnh sử dụng hình thức mới này của biểu thức?

params.fetch(:engagement).permit(:attributes, :you, :want, :to, :allow) 
+0

Cảm ơn @Deepak - mục đích của dấu ngoặc nhọn trong khung? – Mel

+1

@Mel Nó sẽ trả về giá trị băm rỗng của bạn trong trường hợp không có khóa: tham gia vào các thông số. kiểm tra ở trên Tôi đã chỉnh sửa câu trả lời –

+0

Cảm ơn @Deepak - điều đó có nghĩa là nếu tôi muốn bắt đầu sử dụng cách thiết lập thông số mạnh mới, tôi nên sử dụng ví dụ thứ ba trong câu trả lời của bạn? – Mel

Các vấn đề liên quan