#javascript #ajax #ruby-on-rails-3.1
#javascript #ajax #ruby-on-rails-3.1
Вопрос:
У меня есть следующий код:
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, h("add_fields(this, '#{association}', '#{escape_javascript(fields)}')"))
end
Когда он запускается, он должен дублировать предыдущее поле формы. Когда я нажимаю на свою ссылку, чтобы добавить новое поле, он просто отображает встроенный HTML (он был полностью экранирован и доступен для просмотра). Я нашел предыдущий вопрос, в котором говорилось, что это проблема с Rails 3.1.0rc2, но я использую текущую версию rails 3.1.0. Поэтому я не уверен, связано ли это с моей конфигурацией или проблема снова появилась в rails.
Ответ №1:
Попробуйте изменить эту строку
link_to_function(name, h("add_fields(this, '#{association}', '#{escape_javascript(fields)}')"))
к этому
link_to_function(name, "add_fields(this, '#{association}', '#{escape_javascript(fields)}')", :remote => true)
Я думаю, что * rails 3.1.x автоматически выполняет экранирование
Комментарии:
1. @witharmshigh рад помочь