2 votes

La production de Rails rend des partiels JS à partir de app/views/model

Bonjour à tous !

J'ai un fichier partiel appelé _more_contacts.js.coffee sur app/views/contacts/

Cette partie est rendue par un appel Ajax à l'outil de gestion des données. ContactsController et mettre à jour un autre partiel ( _more_contacts.html.erb ) dans une vue :

Appel d'Ajax :

<%= link_to "blah", more_contacts_path(@smthg) , method: :post, remote: true, id: "more_contacts", data: {last: raw(@id)} %>

Code du contrôleur :

def more_contacts  
  @contacts = Contact.search(params)
  respond_to do |format|  
    format.js { render partial: "more_contacts" }  
  end  
end  

JS Code partiel :

$('#more_contacts_table').append('<%=j render partial: "more_contacts", formats: [:html] %>')  

HTML partiel :

<% @contacts.each do |contact| %>
  <tr>
    <td><%= link_to contact.company, contact_path(contact.id) %></td>
    <td><%= contact.email %></td>
  </tr>
<% end %>

Notez que j'ai lutté pendant quelques heures pour découvrir qu'il ne devrait pas avoir le symbole .erb même si elle contient du code ruby...

Bref, tout fonctionne très bien en développement, mais je n'arrive pas à le faire fonctionner en production :(
J'ai essayé ce qui suit dans mon config/environments/production.rb

config.serve_static_assets = false  
config.assets.compress = true  
config.assets.compile = true  
config.assets.digest = true  

config.assets.precompile += %w( contacts/more_contacts.js app/views/contacts/more_contacts.js )  
config.assets.precompile << "contacts/_more_contacts.js"  
config.assets.precompile << "#{Rails.root}/app/views/contacts/_more_contacts.js"  
config.assets.precompile << "#{Rails.root}/app/views/contacts/_more_contacts.js.coffee"  
config.assets.precompile << "#{Rails.root}/app/views/contacts/more_contacts.js"  
config.assets.precompile << "#{Rails.root}/app/views/contacts/more_contacts.js.coffee"  

Mais lorsque je lance ma tâche rake pour compiler les actifs, more_contacts.js est introuvable ( public/assets/manifest.yml o public/assets/ ) et l'appel Ajax échoue...

Je suis coincé ici :( Une idée, quelqu'un ?

1voto

cl3m Points 2761

Je l'ai corrigé en déplaçant coffee-rails hors du groupe assets dans mon Gemfile, grâce à Les vues JavaScript de Rails ne fonctionnent pas en production .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X