Rails 3.1: вызов шаблона через JavaScript - PullRequest
0 голосов
/ 16 сентября 2011

Я только что проходил этот

старый эпизод каста рельсов, и он упоминает одну вещь (теперь, очевидно, устаревшую) код link_to_function.Вот один интересный фрагмент, который он упоминает:

 link_to_function "Add a Task" do |page|
    page.insert_html :bottom, :tasks, :partial => 'task', :object => Task.new
  end

Короче говоря, щелкнув ссылку «Добавить задачу», можно добавить частичную «задачу» на страницу без ajax.

Я знаком с тем, каксделать это в Rails 3 / 3.1 через AJAX и / или ручной javascript, но как вы можете использовать шаблон частично, не касаясь ajax?

Ответы [ 2 ]

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

Он просто хранит html-контент в коде javascript, который отображается при отображении страницы.Поэтому, когда вы нажимаете «Добавить задачу», частичное уже сбежало в коде JavaScript действия добавления задачи.Просто посмотрите на содержимое страницы с помощью firebug.

Также в документах показано, что instert_html выглядит так для прототипа:

def insert_html(position, id, *options_for_render)
  content = javascript_object_for(render(*options_for_render))
  record "Element.insert(\"#{id}\", { #{position.to_s.downcase}: #{content} });"
end

Итак, вы можете видеть, что содержимоена самом деле является частичным task, и он вставлен в код JavaScript.Также я должен отметить, что это навязчивый способ использования javascript.

Взгляните на документы .

0 голосов
/ 28 мая 2012

Я проходил через тот же Railscast, и я выяснил причину, по которой это не работает, потому что этот метод использует Prototype, который по умолчанию недоступен с Rails 3.1.

Вы можете заставить это работатьпутем установки прототипа из:

https://github.com/rails/prototype-rails

...