Eh bien ma question est simple, comment faire une application Ruby on Rails fonctionne avec Vue.js?Comment faire fonctionner les rails avec vue.js?
Les détails
Je regarde d'abord le joyau vue-rails
, mais qui ajoutent Vue à la canalisation d'actifs des rails, et je veux travailler avec d'autres paquets de MNP, comme browserify. Ensuite, je regarde à cela, browserify-rails
qui permettent commonjs dans le dossier js app/assets/javascript/
. Aussi, je prévois de faire une application Vuejs pour chaque contrôleur rails, et l'accès aux actions backend avec le vue-resource
et vue-router
(si ce n'est pas une bonne approche s'il vous plaît faites le moi savoir), alors j'ai ajouté la ligne suivante à ma mise en page
<%= javascript_include_tag params[:controller] %>
qui ajoutera un fichier js avec le nom du contrôleur, de sorte que le UsersController
aura le fichier users.js
avec la principale application de vue de ce contrôleur.
Ensuite, essayer ce que j'échafaudés un utilisateur ressource avec rails et font rendre format JSON dans chaque action, comme celui-ci
def index
@users = User.all
respond_to do |format|
format.html # index.html.erb
format.json { render json: @users }
end
end
qui fonctionne très bien. Ensuite, dans le dossier app/assets/javascript/
ajouter users.js avec le contenu suivant
var Vue = require('vue');
Vue.use(require('vue-resource'));
new Vue({
ready: function(){
this.$http.get('users.json').then(function(response){
console.log(JSON.stringify(response));
});
}
});
Et quand je visite la console de développement en chrome, je vois que Vue est ajoutée, mais je ne vois pas de réponse, et j'avais déjà inséré un utilisateur. En passant, j'essaie avec l'URL https://vuejs-rails-yerkopalma.c9users.io/users
(je développe en c9.io) et seul le fichier /users/index.html.erb
est rendu. Alors, waht sont mes suppositions:
- Je pourrais utiliserai
vue-resource
dans un mauvais sens, je veux dire l'URL passée à la fonctionget()
. - Je pourrais manquer une configuration
vue-resource
. - Peut-être que je devrais juste utiliser la gemme
vue-rails
combinée avecbrwoserify-rails
mais je ne sais pas comment. Toute aide ou ligne directrice serait appréciée.
Voici mon fichier application.js
(est également inclus dans mon dossier de mise en page)
// This is a manifest file that'll be compiled into application.js, which will include all the files
// listed below.
//
// Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts,
// or any plugin's vendor/assets/javascripts directory can be referenced here using a relative path.
//
// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
// compiled file.
//
// Read Sprockets README (https://github.com/rails/sprockets#sprockets-directives) for details
// about supported directives.
//
//= require jquery
//= require jquery_ujs
//= require bootstrap-sprockets
Dans votre appel '.then', vous n'avez pas spécifié de gestionnaire d'erreurs. Vous devriez en ajouter un avec la journalisation. En outre, utilisez l'inspecteur de votre navigateur Web pour examiner les demandes réseau en cours pour voir si elles sont formées et envoyées comme vous le souhaitez. –
il est à noter que vuejs-rails utilise des bibliothèques de vuesjs obsolètes. Et si vous utilisez browserify-rails, vous n'utiliserez pas sprockets/application.js. Donc, vous devriez vraiment choisir une façon de charger vos dépendances javascript. – ytbryan
@ytbryan J'utilise des pignons et le fichier application.js (en chargeant jQuery et bootstrap à partir d'ici) avec browserify sans problèmes. Quoi qu'il en soit, vous avez peut-être raison d'utiliser un seul moyen de gérer les dépendances de js, mais je ne sais pas pourquoi vous avez parlé de bibliothèques de visionnages obsolètes. Est-ce que browserify rails charge une version obsolète de Vue.js? –