Если это войдет в HTML-атрибут, Вам будет нужно к обоим HTML - кодируют (как минимум: >
к >
<
к <
и "
к "
) это, и одинарные кавычки Escape (с обратной косой чертой), таким образом, они не вмешиваются в Ваше заключение в кавычки JavaScript.
Лучший способ сделать это с Вашей системой шаблонной обработки (расширяющий его, при необходимости), но Вы могли просто сделать несколько функций выхода/кодирования и обернуть их обоих вокруг любых данных, это идет туда.
И да, это совершенно допустимо (корректный, даже) к Escape HTML все содержание Ваших HTML-атрибутов, даже если они содержат JavaScript.
Похоже, вы поместили свой метод create_deliverable
после модификатора доступа private
в свой сценарий. Поместите его после public
.
public
def create_deliverable(complexity, project_phase_id, deliverable_type_id)
Deliverable.create(:name => (0...8).map{65.+(rand(25)).chr}.join,
:size => 2 + rand(6) + rand(6),
:rate => 2 + rand(6) + rand(6),
:deliverable_type_id => deliverable_type_id,
:project_phase_id => project_phase_id,
:complexity => complexity)
end
private # to keep the rest of methods private
Если вы собираетесь использовать self.
, используйте его в определении метода, а не в вызове.
def self.create_deliverable(...)
...
end
...
create_deliverable("Low", type.id, phase.id)
...
Насколько я понимаю, .rb
файлы без определения класса при запуске заключаются в анонимный класс ruby, поэтому определение метода для себя должно работать нормально.