2016-08-21 3 views
0

Я пробовал все, что я могу найти, использовать файл js.erb, потому что мне нужно использовать ruby ​​вместе с my js.Как использовать js.erb в rails app

Я знаю, что это не код, потому что у меня то же самое в application.js, и он отлично работает.

Модель: темы

Я пытался добавить topics.js.erb в просмотров/темы/ Я попытался частично _index.js.erb, и делает его - я вижу его загрузку, но не выполняется.

В обоих файлах, у меня есть:

$(document).ready(function() { 
    console.log('something'); 
}) 

Есть ли что-то очевидно, что я здесь отсутствует? Спасибо!

+0

Проверьте вас темы действий контроллера и убедитесь, что вы отвечаете с js, поскольку по умолчанию ваш ответ html! Здесь мы идем: http://guides.rubyonrails.org/working_with_javascript_in_rails.html! Ваш ответ должен быть примерно таким: reply_with do | format | format.js format.html end. Вы также можете проверить свою консоль (рельсы с работающим сервером), где вы должны увидеть что-то вроде рендеринга темы # index в js формате. – Evgeny

ответ

1

Хорошо, я думаю, что сейчас понимаю ваш вопрос. У вас есть какое-то действие индекса в контроллере, index.html.erb и index.js.erb, и вы хотите запустить javascript с index.js.erb после рендеринга index.html.erb. Это не сработает, js.erb просмотров используются для чего-то другого. Чтобы запустить ваш javascript-код только при визуализации индекса, вы можете просто поместить этот код javascript внутри index.html.erb. Или вы можете поместить этот код в свой файл application.js и добавить дополнительные условия, поэтому он будет работать только для действия индекса.

Там нет никакого способа решения Rails для этого, но вы можете попробовать что-то вроде этого:

index.html.erb:

# ... your code here 

<script type="text/javascript"> 
    window.railsView = "controller_name#index"; 
</script> 

application.js:

$(document).ready(function() { 
    if (window.railsView == "controller_name#index") { 
    console.log("something"); 
    } 
}); 
+0

У меня есть файл index.js.erb, сохраненный в моем представлении тем. Что еще мне нужно сделать, просто чтобы консольный журнал что-то отображал на странице? Он все еще не подключен. – gwalshington

+0

@gwalshington Теперь я понимаю, что вы имеете в виду. Я изменил свой ответ. –

+0

Для чего предназначены файлы js.erb? Моя конечная цель - иметь как js, так и ruby ​​в том же файле. Например, я хочу определить current_user и знать, если они уже предпочитают тему, а также их асинхронно неприглядную/любимую на индексной странице. Это уже сделано через ruby, но страница перезагружается с каждым действием. Не будет ли это использование js.erb? – gwalshington

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