Beh, la mia domanda è semplice, come si fa a far funzionare un'app Ruby on Rails con Vue.js?Come far funzionare le rotaie con vue.js?
I dettagli
ho guardo il vue-rails
gioiello, ma che aggiungo Vue alla pipeline rotaie di asset, e voglio lavorare con altri pacchetti NPM, come browserify. Poi guardo a quello, browserify-rails
che abilita i commonjs nella cartella js app/assets/javascript/
. Inoltre sto pensando di creare un'app Vuejs per ogni controller di rotaie e accedere alle azioni di backend con lo vue-resource
e vue-router
(se questo non è un buon approccio, per favore fatemelo sapere), così ho aggiunto la seguente riga al mio layout
<%= javascript_include_tag params[:controller] %>
che aggiungerà un file js con il nome del controller, in modo che il UsersController
avrà il file con l'applicazione users.js
vue principale per tale controller.
Poi, di provare questo ho ponteggi un fruitori delle risorse con le rotaie, e la rendono di rendering formato JSON in ogni azione, in questo modo
def index
@users = User.all
respond_to do |format|
format.html # index.html.erb
format.json { render json: @users }
end
end
Ciò sta funzionando benissimo. Poi nella cartella app/assets/javascript/
aggiungo users.js con il seguente contenuto
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));
});
}
});
E quando ho ispezionare console dev in cromo, vedo che viene aggiunto Vue, ma non vedo alcuna risposta, e ho avuto già inserito un utente. A proposito, sto provando con l'url https://vuejs-rails-yerkopalma.c9users.io/users
(sto sviluppando in c9.io) e viene eseguito il rendering solo del file /users/index.html.erb
. Così, il livello qualitativo sono le mie supposizioni:
- potrei utilizzerò
vue-resource
in modo sbagliato, voglio dire l'url passato alla funzioneget()
. - Potrebbe mancare qualche configurazione
vue-resource
. - Forse dovrei usare la gemma
vue-rails
combinata conbrwoserify-rails
ma non so come. Qualsiasi aiuto o linea guida sarebbe gradito.
Ecco il mio file di application.js
(è anche incluso nel mio file di layout)
// 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
Nella chiamata '.then', non è stato specificato un gestore errori. Dovresti aggiungerne uno con la registrazione. Inoltre, utilizza l'ispettore del tuo browser Web per esaminare le richieste di rete effettive che vengono fatte per verificare che siano formate e inviate nel modo previsto. –
vale la pena notare che vuejs-rails utilizza librerie vuejs obsolete. E se stai usando browserify-rail, allora non utilizzerai sprockets/application.js. Quindi dovresti davvero scegliere un modo per caricare le tue dipendenze javascript. – ytbryan
@ytbryan Sto usando i pignoni e il file application.js (caricando jQuery e bootstrap da qui) insieme a binari di browserify senza problemi. Ad ogni modo, forse hai ragione su come usare solo un modo per gestire le dipendenze di js, ma non so perché hai dichiarato di librerie di vuejs obsolete. I binari di browserify caricano una versione obsoleta di Vue.js? –