2013-02-16 10 views
8

Jak mogę wykonać interpolację w ramach pojedynczego cudzysłowu?Interpolacja w pojedynczych cudzysłowach

Próbowałem czegoś takiego, ale są dwa problemy.

string = 'text contains "#{search.query}"' 
  1. To nie działa
  2. muszę końcowy ciąg mieć dynamicznej zawartości owinięte w cudzysłów tak:

    'text contains "candy"' 
    

Prawdopodobnie wydaje się dziwne, ale gem, z którym pracuję, wymaga tego.

+0

get search.query wrócić to wynik zawinięte w cudzysłów? –

+2

Nigdy nie musisz używać pojedynczych cudzysłowów - utworzony ciąg nie wie, czy został utworzony z pojedynczego cudzysłowu literowego, podwójnego cudzysłowu, literału lub z innych operacji łańcuchowych –

Odpowiedz

11

Możesz użyć %{text contains "#{search.query}"}, jeśli nie chcesz uciec od podwójnych ofert "text contains \"#{search.query}\"".

-2

Zastosowanie

%q(text contains "#{search.query}") 

co oznacza rozpoczęcie ciąg z pojedynczego cytatu. Lub jeśli chcesz zacząć z podwójnego wykorzystania cytatem:

%Q(text contains '#{text}') 
+0

Nie działa dla mnie. Dosłownie wypisuje "search.query". – Dru

4
'Hi, %{professor}, You have been invited for %{booking_type}. You may accept, reject or keep discussing more about this offer' % {professor: 'Mr. Ashaan', booking_type: 'Dinner'} 
+0

Po prostu notka, 'String.format' jest lepszym rozwiązaniem niż'% '(według Rubocop). +1 dobry panie, dzięki –