class RailsVueGenerator::Handlers::IndexHandler

Public Instance Methods

script() click to toggle source
# File lib/rails_vue_generator/handlers/index_handler.rb, line 33
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.pluralize}: state => state.#{model_name}.all,"
  lines << "loading: state => state.#{model_name}.loading.all"
  lines << "}),"
  lines << "},"
  lines << "created() {"
  lines << "this.$store.dispatch('#{model_name}/getAll')"
  lines << "}"
  lines << "};"
  lines << "</script>"
  lines.join("\n")
end
style() click to toggle source
# File lib/rails_vue_generator/handlers/index_handler.rb, line 54
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/index_handler.rb, line 4
def template
  index_page_lines = []
  index_page_lines << "<template><div><h1>#{model_name.titleize}</h1>"
  index_page_lines << "<div class=\"spinner\" v-if='loading'>Loading #{model_name.pluralize.titleize}</div>"
  index_page_lines << "<div v-else>"
  index_page_lines << "<table>"
  index_page_lines << "<tr>"
  @model.columns.reject { |column| IGNORED_COLUMNS.include?(column.name.to_sym) }.each do |column|
    index_page_lines << "<th>#{column.name.titleize}</th>"
  end
  index_page_lines << "<th></th>"
  index_page_lines << "</tr>"

  index_page_lines << "<tr v-for='#{model_name.downcase} in #{model_name.downcase.pluralize}' :key='#{model_name.downcase}.id'>"
  @model.columns.reject { |column| IGNORED_COLUMNS.include?(column.name.to_sym) }.each do |column|
    index_page_lines << "<td>{{#{model_name.downcase}.#{column.name}}}</td>"
  end
  index_page_lines << "<td><router-link :to=\"{name: '#{model_name}', params: {id: #{model_name.downcase}.id}}\">Show</router-link> | "
  index_page_lines << "<router-link :to=\"{name: 'edit-#{model_name}', params: {id: #{model_name.downcase}.id}}\">Edit</router-link></td>"

  index_page_lines << "</tr>"
  index_page_lines << "</table>"
  index_page_lines << "<router-link :to=\"{name: 'new-#{model_name}'}\">Create a new #{model_name.titleize}</router-link>"
  index_page_lines << "</div>"
  index_page_lines << "</div>"
  index_page_lines << "</template>"
  index_page_lines.join("\n")
end