2014-12-29 7 views
1

У меня есть метод рельсы помощника, который вызывается:Возврат строки и функции

<%= link_to_add_fields "Add Product", f, :products %> 

в application_helper.rb:

def link_to_add_fields(name, f, association) 
    new_object = f.object.send(association).klass.new 
    id = new_object.object_id 
    fields = f.fields_for(association, new_object, child_index: id) do |builder| 
    render(association.to_s.singularize + "_fields", f: builder) 
    end 
    "<div>BLAHBLAHBLAH</div>" + 
    link_to(name, '#', class: 'add_fields', data: {id: id, fields: fields.gsub('\n', '')})+ "" 
end 

Но это возвращает все видимое в виде текста на веб-странице. Как вернуть оба div и link_to, так что они оба отображаются правильно?

ответ

2

попробовать что-то вроде этого, вместо:

"<div>BLAHBLAHBLAH</div> #{link_to(name, '#', class: 'add_fields', data: {id: id, fields: fields.gsub('\n', '')})}".html_safe 

Обратите внимание на использование html_safe. Помните, что Rails напишет ваш необработанный HTML-код в виде простой строки, чтобы предотвратить такие проблемы, как Html Script Injection. Это то, с чем вы столкнулись, поэтому вам просто нужно убедиться, что он написан как фактический HTML-код.

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