2016-05-13 3 views
0

У меня есть Params, как:удалить `" 'из строки рельсов 4

params[:id]= "\"ebfd11a9-3aa4-415a-ba72-1b6796ea1bf6\"" 

И я хочу, чтобы получить ожидаемый результат, как показано ниже:

"ebfd11a9-3aa4-415a-ba72-1b6796ea1bf6" 

Как я могу это сделать

+0

Где эти данные берутся, то есть, кто делает запрос ? – Stefan

ответ

4
?

Вы можете использовать gsub:

"\"ebfd11a9-3aa4-415a-ba72-1b6796ea1bf6\"".gsub("\"", "") 
=> "ebfd11a9-3aa4-415a-ba72-1b6796ea1bf6" 

Или, как уже упоминалось @Stefan, delete:

"\"ebfd11a9-3aa4-415a-ba72-1b6796ea1bf6\"".delete("\"") 
=> "ebfd11a9-3aa4-415a-ba72-1b6796ea1bf6" 
+0

Вы также можете использовать 'delete' для удаления отдельных символов, у него меньше накладных расходов, чем' gsub'. – Stefan

+0

@Stefan, спасибо, обновлено. – Ilya

+1

Или '.delete ('' ')', конечно. –

4

Если это данные в формате JSON, который он мог бы очень хорошо быть в таком формате:

JSON.load(params[:id]) 

Это обрабатывает вещи там, где каким-то образом избежали строк там , или параметры являются массивом.

+0

Rails должен автоматически анализировать данные JSON. – Stefan

+0

Это может быть сделано только через POST. Если это произойдет через GET, он не будет проходить через те же обработчики, и это довольно легко сделать вызов AJAX с неверно сериализованными параметрами запроса. – tadman

+0

'JSON.load (params [: id])' поможет в этом конкретном случае, но это приведет к ошибке синтаксического анализа, если данные поступают правильно. – Stefan

1

Просто используйте tr!

params[:id].tr!("\"","") 

tr! будет также изменить главной струной

В случае, если вы не хотите, чтобы изменить основную строку просто использовать:

params[:id].tr("\"","") 

Спасибо Илья

+1

лучше использовать 'tr' без восклицательного знака, за исключением случаев, если вы хотите изменить строку источника – Ilya

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