Unescaping встроенные ссылки в хамле - PullRequest
0 голосов
/ 26 сентября 2010

Поэтому я пытаюсь получить ссылку для удаления рядом с подписью в форме электронной почты. Однако мои рельсы вуду явно очень слабые. Он ускользает от HTML, и я не могу понять, как его получить. Есть намеки?

= f.input :email, :label => "Email " + link_to_remove_fields("[x]", f)

[править] о да, это делает то же самое:

= f.input :email, :label => "Email #{link_to_remove_fields("[x]", f)}"

и вот мой вспомогательный метод ...

def link_to_add_fields(name, f, association)
    new_object = f.object.class.reflect_on_association(association).klass.new
    fields = f.fields_for(association, new_object, :child_index => "new_#{association}") do |builder|
      render(association.to_s.singularize + "_fields", :f => builder)
    end
    link_to_function(name, "add_fields(this, \"#{association}\", \"#{escape_javascript(fields)}\")")
  end

Ответы [ 3 ]

4 голосов
/ 26 сентября 2010

Это не так сложно исправить.Rails по умолчанию будет избегать всего.Во избежание этого вы можете использовать метод html_safe для любой строки.Это решит вашу проблему.

= f.input: email,: label => "Email" + link_to_remove_fields ("[x]", f) .html_safe

или

= f.input: email,: label => "Email # {link_to_remove_fields (" [x] ", f) .html_safe}"

Не забудьте не ставить его в конце всей строки токенаили это не сработает.Например, это не будет работать.

= f.input: email,: label => "Email # {link_to_remove_fields (" [x] ", f)}". Html_safe

Надеюсь, что это помогает вам.=)

1 голос
/ 15 сентября 2011

У меня была такая же проблема, как я, я исправил ее с помощью следующего:

link_to_function(name, "add_fields(this, '#{association}', \'#{escape_javascript(fields)}\')")

Стоит отметить, что когда я попробовал это в приложении на Rails 3.1, мне пришлось перезапустить сервер, прежде чем изменения в помощнике были подобраны. Это может или не может быть верно для более ранних версий, но стоит иметь в виду.

0 голосов
/ 27 сентября 2010

Попробуйте это:

require 'cgi'

unescaped = CGI.unescapeHTML(string)
...