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 ?