2015-06-22 14 views
9

Tôi đã tìm kiếm ở khắp mọi nơi nhưng có ai biết nếu có thể cho phép và mảng mảng sử dụng tham số mạnh trong đường ray không? Mã của tôi trông như thế này:Cho phép mảng mảng có tham số mạnh trong đường ray

params.require(:resource).permit(:foo, :bar => [[:baz, :bend]]) 

này đem lại cho tôi:

ArgumentError (sai số của đối số (0 cho 1..2))

Tôi cũng đã cố gắng:

params.require(:resource).permit(:foo, :bar => [[]]) 
params.require(:resource).permit(:foo, :bar => [][]) 
params.require(:resource).permit(:foo, :bar => []) 

Nhưng tất cả những lỗi này đều cho tôi lỗi không hợp lệ hoặc không xử lý các thông số.

Cảm ơn trước sự giúp đỡ nào

Trả lời

0

Dưới đây là một ví dụ lấy từ rails strong parameter Github page:

params.permit(:name, {:emails => []}, :friends => [ :name, { :family => [ :name ], :hobbies => [] }]) 
+1

Tôi không nghĩ rằng ví dụ này là mảng mảng, có vẻ là mảng có băm và sau đó là mảng trong băm đó. Tôi sẽ sử dụng một mảng băm, tuy nhiên tôi không thể làm điều này bởi vì các phím có thể giống với các thiết lập hiện tại tôi có cho dự án của tôi –

2

Nhìn vào code Tôi nghĩ rằng đây là điều không thể. bạn phải san bằng mức thứ hai.

def permit(*filters) 
    params = self.class.new 

    filters.each do |filter| 
    case filter 
    when Symbol, String 
     permitted_scalar_filter(params, filter) 
    when Hash then 
     hash_filter(params, filter) 
    end 
    end 

    unpermitted_parameters!(params) if self.class.action_on_unpermitted_parameters 

    params.permit! 
end 
+0

Có một vấn đề mở trên đường ray cho điều này ngay bây giờ: https://github.com/rails/rails/issues/23640 – jwadsack

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