2010-09-11 3 views
0

Я использую Haml в рельсах и писал с помощью фильтра markdown (bluecloth gem), но кусок кода примера находится в рубине, и страница пытается выполнить # {values}, как я могу остановить это?Haml Markdown Filter Разбивка на примере Ruby Code in Rails

Вот ломка бит кода:

:markdown 
    like_frags = [fields].flatten.map { |f| "LOWER(#{f}) LIKE :word#{count}" } 
    or_frags << "(#{like_frags.join(" OR ")})" 
    binds["word#{count}".to_sym] = "%#{word.to_s.downcase}%" 
    count += 1 
    end 

Ошибка, которая возвращается:

undefined local variable or method `f' 

Я нашел решение сам, но это далеко от идеала:

- f=nil;count=nil;like_frags=[];word=nil; 

Я помещаю это перед тем, как начнется фильтр markdown.

Я знаю, что это можно сделать, потому что stackoverflow не сломался, когда я это написал, так как же я могу достичь этого?

Заранее благодарен!

ответ

2

В документации Хэмла интерполяция внутри фильтров является нормальной и ожидаемой. Чтобы обойти это, вы можете просто избежать синтаксис #{} интерполяции, предваряя обратной косой черты:

:markdown 
    like_frags = [fields].flatten.map { |f| "LOWER(\#{f}) LIKE :word\#{count}" } 
    or_frags << "(\#{like_frags.join(" OR ")})" 
    binds["word\#{count}".to_sym] = "%\#{word.to_s.downcase}%" 
    count += 1 
    end 
+0

Ха, я пытался избежать их, но тупо использовали прямой слэш вместо обратной косой черты! Спасибо за вашу помощь! –