Utiliser Rails3 - J'ai un projet avec de nombreuses tâches. Je veux utiliser JavaScript pour construire l'interface utilisateur pour chaque tâche. J'ai pensé que je pouvais afficher ces tâches sur les projets show page en rendant une partielle JavaScript pour chacun. Je ne peux pas obtenir des "tâches/montrer" pour voir les tâches/show.js.erb toutes idées?
Dans des projets/show.html.erb
<div id="tasks">
<%= render(:partial => "tasks/show", :collection => @project.tasks) %>
</div>
tâches/spectacle.js.erb
$("tasks").append(new TaskWidget(task.id))
Je reçois les erreurs
ActionView::MissingTemplate in Projects#show
Missing partial tasks/show with {:handlers=>[:erb, :rjs, :builder, :rhtml, :rxml], :formats=>[:html], :locale=>[:en, :en]} in view paths .... around line #13
Merci
Ne devrait-il pas être dans le fichier _show.js.erb
?
De - "Utilisation partielle" .
Vous pouvez essayer cela. Au lieu d'avoir une partielle JavaScript, vous pouvez créer un code HTML _show_js.html.erb
Et surmonter votre code JS avec la balise HTML <script>
.
<script type='text/javascript'>
$("tasks").append(new TaskWidget(task.id))
</script>
et,
<div id="tasks">
<%= render(:partial => "tasks/show_js", :collection => @project.tasks) %>
</div>
Pour que cela fonctionne, je devais ajouter le format:
<script>
<%= render(:partial => 'shared/topmenujs', :formats => [:js] ) %>
</script>
Eh bien, je ne sais pas si c'est le même problème, mais j'ai traversé une chose similaire avec Rails 3. J'avais par exemple une vue partielle dans app/views/invoices/_select.html.erb
et j'ai pu rendre avec une vue avec
<% = Render: Partial => "Factures/Sélectionnez"%>
sans problème et si dans le contrôleur, je place
render: Partial => "Factures/Sélectionnez"
J'ai pu ouvrir l'action dans le navigateur, le problème surviennent lorsque j'essaie d'appeler l'action d'un appel Ajax, puis je reçois le ActionView::MissingTemplate
Erreur. Le seul moyen que j'ai trouvé à résoudre était de renommer la vue à _select.rhtml
Et puis tout fonctionne bien.
Le problème est que IN Rails 3 Le rendu du fichier .js recherchera uniquement des fichiers sous la forme de show.js.erb ou show.erb.
Pour contourner cela, vous devez soit créer un fichier _show.js.erb, mais comme ce type de défaite le but des partiels, vous pouvez également renommer le fichier show.html.erb à montrer.erb
C'est probablement une mauvaise pratique, cependant, de faire une action de contrôleur standard sans type final (E.G. show.erb)
Ce que je ferais si j'étais que vous renommez votre partiel quelque chose comme _tasks.erb au lieu de _show.html.erb, puis si vous aviez besoin d'une tâche/show.html.erb, vous pouvez simplement rendre partial à l'intérieur de cette vue.