2016-02-22 5 views
1

В настоящее время я разрабатываю и внедряю RoR API.Неопределенный метод разрешает строку

У меня возникла проблема с сильными параметрами.

Я ожидаю получить следующие атрибуты:

{ analysis_data: { barcode: "some_string" } } 

Чтобы убедиться, что я просто использовать/комбинацию требуется разрешение:

params.require(:analysis_data).permit(:barcode) 

Это хорошо работает, если анализ данных равен нулю или хэш.

Однако, если клиент отправить запрос, где analysis_data является строкой вместо хэша, то запрос возвращает ошибку 500.

Например:

{ analysis_data: "some_string" } 

Производит следующую ошибку 500:

NoMethodError (undefined method `permit' for "barcode":String): 

Есть clean обходной путь?

ответ

1

Попробуйте как этого

params.fetch(:analysis_data, {}).permit(:barcode) 
+0

Думал, что это решит проблему, когда я впервые прочитаю ее сегодня утром. Но я пробовал, и после тестирования он не работает. Он по-прежнему извлекает строку и пытается вызвать разрешение на эту строку. –

0

Не уверен, что если вы хотите, чтобы разрешить строку и хэш или предотвратить строку без метания ошибки. Если это первый, вы можете использовать params.require(:analysis_data).permit!, чтобы разрешить любое значение, пока оно находится внутри analyt_data.

+0

Нет, речь идет о втором: не допускайте, чтобы строка выдавала исключение. –

Смежные вопросы