2015-10-14 4 views
2

У меня есть мнение
index.html.erb ->
link_to "click me " , 'customers/index' , :remote => true.сделать js.erb файл работать без AJAX Ruby On Rails 4

контроллер -> клиенты

def index 
end 

index.js.erb

alert('in js file'); 

alert работает абсолютно нормально. но что, если я не хочу делать ajax, и я просто хочу, чтобы файл js.erb работал каждый раз, когда загружался клиент/индекс. Я новичок в разработке rails, и мой вопрос может быть очень простым, но я не смог найти решение. Я знаю, что мы указываем следующее, когда мы хотим определенного типа. но, насколько я знаю, что мой случай differenct

respond_to do |format| 
format.js 
format.html 
end 

ответ

1

Вы можете просто переместить код из index.js.erb в index.html.erb.

Если вы хотите сохранить его отдельно, тогда вы можете переместить код js на частичный и отобразить его внутри index.html.erb. См. Документы here.

Update

Как сделать это с частичным:

  1. Создать _yourpartial.js.erb и заполнить JS код
  2. Оказать код внутри 'index.html.erb' добавить следующее: <%= render partial: 'yourpartial', formats: [:js] %>

(Но, конечно, вам все равно нужен тег сценария вокруг кода js)

+0

Вам не нравится красотка 'js.erb' частичная? :) – nsave

+0

Я имею в виду создать '_yourpartial.js.erb' и отобразить его внутри' index.html.erb' – nsave

+0

@ImranNaqvi, вы проверили мой обновленный ответ? Если это похоже на текст, вы просто забыли добавить теги 'script' – nsave

-1

Я постараюсь вам помочь. Вы можете поместить свой аякс в свой application.js. Чтобы сделать его чистым, вам нужно создать одну функцию в готовом документе. Функция готовности документа будет активна, если страница уже загружена.

запрос
$(document).ready(function() { 
    callAjaxCustomerIndex(location.pathname); 
}); 

function callAjaxCustomerIndex(current_url) { 
    if (current_url == "/customers") 
    $.ajax({ 
     url: "/customers", 
     async: false, 
     method: "GET", 
     data: { "place_id" : place["place_id"] }, 
     success: function(data){ 
       alert('success'); 
      } 
     }); 
     infoWindow.open(map, marker); 
     buildIWContent(place); 
    }); 
} 

Это Аякс будет отправлен, когда location.pathname является «клиентами». Надеюсь, это поможет вам.

+0

Думаю, вы не заметили вопроса. Я четко заявил, что хочу, чтобы js.erb работал ** без ** ajax – ImranNaqvi

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