У меня второе приложение с Rails, и я хочу, чтобы ajax работал. Я также использую вкладки из bootstrap 2. Есть два варианта вкладок для начальной загрузки, которые я нашел, один дает вам вкладки, и вы можете поместить содержимое этих вкладок в DIV, другой - в основном каждая вкладка, которую вы можете использовать ссылку. Я выбрал последнее, чтобы иметь возможность Ajaxify ссылки. Основная идея заключается в том, что на домашней странице моих приложений вверху есть вкладки, такие как: «Главная», «Инвентаризация», «Задачи» и т. д., и когда вы нажимаете на вкладку, вы попадаете на индексную страницу каждого из этих контроллеров. У меня это работает отлично, пока я не попытаюсь использовать ajax для загрузки действия индекса для каждого контроллера/вкладки. Поэтому в качестве примера я буду использовать только вкладку/контроллер Home:
Домашний контроллер
class HomeController < ApplicationController
def index
@data = "Home Screen Index Page"
respond_to do |format|
format.html
format.js
end
end
end
Вот ссылка на мой взгляд (app/views/layouts/application.html.erb):
link_to "Home", home_path(:format => :js), :remote => true
Я также только что попробовал:
link_to "Home", home_path, :remote => true
Мое действие с индексом на данный момент простое (/app/views/home/index.html.erb):
<%= @data %>
Я создал файл home.js.erb, который был в основном просто предупреждением, потому что он никогда не обрабатывается (я переименовал и даже удалил файл без изменений в сообщениях консоли), и как только предупреждение действительно срабатывает для меня, я могу сосредоточиться на jquery код: у меня было следующее в свое время:
$("<%= escape_javascript render(:file => 'home/index.html.erb') %>").insertAfter('.showindex');
При просмотре консоли, когда я щелкнул ссылку с вкладкой, я вижу следующее:
Started GET "/home.js" for 127.0.0.1 at 2012-03-19 18:15:21 -0700
Processing by HomeController#index as JS
Rendered home/index.html.haml within layouts/application (0.1ms)
Completed 200 OK in 8ms (Views: 7.4ms | ActiveRecord: 0.0ms)
если я удалю (:format => :js) из ссылки, сообщение консоли немного изменится на следующее:
Started GET "/home" for 127.0.0.1 at 2012-03-19 18:16:59 -0700
Processing by HomeController#index as JS
Rendered home/index.html.haml within layouts/application (0.1ms)
Completed 200 OK in 7ms (Views: 7.2ms | ActiveRecord: 0.0ms)
Глядя на консольное сообщение, в моей голове это должно работать, но это не так. Ничего никогда не отображается, и фактически функция TAB для вкладки «Главная» в начальной загрузке больше не работает.
Поскольку последние пару дней у меня ничего не получалось, и кажется, что это не должно быть так сложно, я уверен, что совершаю ошибку новичка. Если кто-то может помочь, я был бы очень признателен.
Спасибо!
link_to "Home", home_path(:format => :js), :remote => true
, и у меня неправильно назван файл js. Его нужно было назвать в честь действия в контроллере, поэтому вместо home.js.erb его нужно было назвать index.js.erb. После этого срабатывает действие предупреждения. Проблема, с которой я столкнулся сейчас, заключается в том, что когда я помещаю$("<%= escape_javascript render(:file => 'home/index.html.erb') %>").insertAfter('.showindex');
в файл js, код отображается в представлении вместо home/index.html. - person Charlie May   schedule 20.03.2012