Ruby on Rails: загрузка фрагмента html через jQuery - PullRequest
0 голосов
/ 05 января 2012

У меня возникают некоторые трудности при загрузке моего html-файла в виде фрагмента в div с использованием jQuery .load.После многих испытаний я пришел к выводу, что он не может найти файл c.html, но я все еще не могу разобраться с ним после того, как проверил почти все возможные версии загрузки в c.html.

index.html.erb и c.html.erb находятся в одной и той же папке, добро пожаловать.

Цените всю помощь, которую я могу получить, обращаясь к ней уже пару дней ...

Часть из html-файла (index.html.erb), куда я хочу загрузить фрагмент:

<div id="menuwrapper">
   <div class="tabArea">
      <%= link_to 'Lorem', {:action => 'update', :controller => 'welcome'},
      {:class=>"tab",:remote=>true} %>
   </div>
</div>
<div id="wrapper2">
   <!--Where i want to load-->
</div>

welcome_controller:

def update
  render :js => "$('#wrapper2').load('c.html.erb', function() {alert('Load was
  performed.');});"
end

HTMLфрагмент, который я хочу загрузить (настолько простой, насколько это возможно):

<!DOCTYPE html>
<html>
  <head><title>Title</title></head>
  <body>
    <div>Content</div>
  </body>
</html>

Маршруты:

get "welcome/update"

Спасибо!

1 Ответ

0 голосов
/ 05 января 2012

Большая картина ... javascript, который вы возвращаете в своем методе update, это просто ... javascript.Он выполняется на стороне клиента (браузера), и браузер не знает, что такое c.html.erb, поскольку это файл на стороне сервера.

Способы исправить это:

Опция 1: Изменить load('c.html.erb'... to load('/path/to/c.html.erb' ...

Этот метод будет немного странным, так как вы будете возвращать ответ JS, который ничего не делает, кроме как сказать клиенту снова пропинговать сервер.Дополнительное путешествие туда и обратно без веской причины.

Вариант 2:

Лучший вариант, учитывая ваш общий подход.

# welcome_controller.rb
def update
end

# update.js.erb
$('#wrapper2').html("<%= escape_javascript render(:file => 'c.html.erb') %>");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...