class RailsVueGenerator::Handlers::EditHandler
Public Instance Methods
script()
click to toggle source
# File lib/rails_vue_generator/handlers/edit_handler.rb, line 56 def script lines = [] lines << '<script>' lines << " import {mapState} from 'vuex'" lines << ' export default {' lines << " name: '#{model_name}-edit'," lines << ' computed:{' lines << ' ...mapState({' lines << " #{model_name}: state => state.#{model_name}.current," lines << " loading: state => state.#{model_name}.loading.current" lines << ' }),' lines << ' },' lines << ' methods: {' lines << ' save(){' lines << " const data = this.#{model_name}" lines << " if (this.#{model_name}.id !== undefined) {" lines << " const id = this.#{model_name}.id" lines << " console.log(\"updating \", this.#{model_name})" lines << " this.$store.dispatch('#{model_name}/update', {id, data}).then(function(response) {this.$router.push({name: '#{model_name}', params: {id: response.id}})}.bind(this))" lines << ' } else {' lines << " console.log(\"updating \", this.#{model_name})" lines << " this.$store.dispatch('#{model_name}/create', this.#{model_name}).then(function(response) {this.$router.push({name: '#{model_name}', params: {id: response.id}})}.bind(this))" lines << ' }' lines << ' }' lines << ' },' lines << ' created() {' lines << ' if (this.$route.params.id !== undefined) {' lines << " this.$store.dispatch('#{model_name}/get', this.$route.params.id)" lines << " } else {" lines << " this.$store.dispatch('#{model_name}/clearCurrent', this.$route.params.id)" lines << " }" lines << ' }' lines << '};' lines << '</script>' lines.join("\n") end
style()
click to toggle source
# File lib/rails_vue_generator/handlers/edit_handler.rb, line 94 def style lines = [] lines << "<style lang='scss' scoped>" lines << '</style>' lines.join("\n") end
template()
click to toggle source
# File lib/rails_vue_generator/handlers/edit_handler.rb, line 6 def template edit_form_lines = [] edit_form_lines << '<template>' edit_form_lines << '<div>' edit_form_lines << "<div v-if='loading' class=\"spinner\">Loading #{model_name.titleize}</div>" edit_form_lines << "<div v-else>" ignored_columns = [:id] @model.columns.reject { |column| IGNORED_COLUMNS.include?(column.name.to_sym) }.each do |column| name = column.name type = column.type edit_form_lines << "<div class='form-group'>" case column.type when :boolean edit_form_lines << "<input type='checkbox' id='checkbox' v-model='#{model_name}.#{name}'>" edit_form_lines << "<label for='checkbox'>#{name.titleize}</label>" when :string input_type = if name.downcase == 'email' 'email' else 'text' end edit_form_lines << "<label for='#{name}'>#{name.titleize}</label>" edit_form_lines << "<input type='#{input_type}' id='#{name}' v-model='#{model_name}.#{name}'>" when :integer edit_form_lines << "<label for='#{name}'>#{name.titleize}</label>" edit_form_lines << "<input type='number' id='#{name}' v-model='#{model_name}.#{name}'>" when :datetime edit_form_lines << "<label for='#{name}'>#{name.titleize}</label>" edit_form_lines << "<input type='datetime' id='#{name}' v-model='#{model_name}.#{name}'>" when :json when :text edit_form_lines << "<label for='#{name}'>#{name.titleize}</label>" edit_form_lines << "<textarea id='#{name}' v-model='#{model_name}.#{name}'/>" when :date edit_form_lines << "<label for='#{name}'>#{name.titleize}</label>" edit_form_lines << "<input type='date' id='#{name}' v-model='#{model_name}.#{name}'>" end edit_form_lines << '</div>' end edit_form_lines << "<div>" edit_form_lines << "<a href='#' class='btn btn-primary' @click=\"save\">Save Changes</a> " edit_form_lines << "<router-link :to=\"{name: '#{model_name.pluralize}'}\">Back</router-link>" edit_form_lines << '</div>' edit_form_lines << '</div>' edit_form_lines << '</div>' edit_form_lines << '</template>' edit_form_lines.join("\n") end