Solucionado (ver solução)
Solucionado
(ver solução)
5
respostas

Utilizar javascript no rails

Olá, tenho uma dúvida em relação ao funcionamento do javascript dentro do rails. Vi que utilizam o bootstrap para fazer todo o layout, mas como faço pra chamar as execuções de javascript em uma página, ou seja no meu html.erb?

Eu sei que posso executar um código javascript direto na página html com a tag script mas não é algo bom uma vez que posso usar o mesmo código várias vezes e dae vou ter que sair duplicando o mesmo código várias vezes no projeto. Por exemplo um simples alert de javascript, posso utilizar o mesmo alert por várias vezes e não é uma boa ficar colocando direto no html.

Eu tentei usar como exemplo dentro de assets/javascripts no arquivo aplication.js um código de alert do javascript. Depois tentei carregar na página index.html.erb fazendo a chamada com

<%javascript_include_tag 'aplication'%>

Depois inseri uma div com o nome da função javascript criada dentro da aplication.js mas simplesmente não executa o alert.

Assim, acho que é algo relacionado a chamada. Como faço para chamar o código javascript na página html e o mesmo executar o código javascript?

5 respostas

Tenta assim:

<%= javascript_include_tag 'application' %>

(adiciona o sinal de igual (=) depois de abrir a tag ruby (<%) para renderizar no html, ou seja, <%= ... %>. (ah, tem um 'typo' no nome application)

Para blocos, operadores condicionais e loops (ifs e fors) não adicione: <% if user.admin? %> ... <% end %>.

Para comentar um código ruby utilize o jogo da velha:

<%# isto é um comentário %>
<%#= user.name %> // não renderiza

Coloquei dessa forma mas ele ainda não rodou

<%= javascript_include_tag 'application' %>

Ainda sem executar o código javascript. Tem alguma outra coisa que precisa colocar para chamar o javascript no html?

Explicando mais um pouco de como estou usando. Fiz uma função simples de javascript pra testar, coloquei na application.js no caminho app->assets->javascripts

$(".pages-contact").click(function() {
  alert("O alert rodou!");
});

Depois inseri na página no arquivo html que é o index.html.erb que está no caminho app->assets->views->home

<%= javascript_include_tag 'application'%>

E também ainda no index coloquei o seguinte código:

<div class="pages-contact">
    <a href="">Clique</a>
</div>

Mas ele simplesmente não executa, Tem algum problema na chamada ou alguma forma específica de chamar javascript no rails? Como funciona as chamadas do javascript no rails?

Deveria funcionar. Consegue ver se surge algum erro no console do devtools? (clica com o botão direito no mouse e depois em 'Inspecionar Elemento'). Você está usando jQuery pelo visto, então você adicionou a biblioteca em no arquivo application.js?

//= require jquery
//= require jquery_ujs

$(".pages-contact a").click(function() {
  alert("O alert rodou!");
});

o jQuery pode ser adicionado como uma gem ou você pode baixar o jquery e colocá-lo na pasta assets/javascripts/ (ou onde quiser, contanto que o caminho esteja correto)

solução!

Sim, estou usando o jquery, na application.js estou usando os seguintes requires:

//= require jquery
//= require jquery_ujs
//= require jquery.mask
//= require_tree .
//= require materialize
//= require form
//= require owlcarousel2/owl.carousel

Todos adicionados como gens e estão no arquivo gemfile.

Mas consegui resolver aqui, como tinha dito, era uma erro que estava ocorrendo em uma outra função que tinha que estava usando jquery, por isso não estava dando certo, vi no console.

Obrigado, problema resolvido.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software