Upgrade to Pro — share decks privately, control downloads, hide ads and more …

DVD of Rails

ogom
August 12, 2014

DVD of Rails

Detonation Velocity Development

ogom

August 12, 2014
Tweet

More Decks by ogom

Other Decks in Programming

Transcript

  1. Welcome Welcome Controller Root Route rails generate controller welcome index

    cat << __EOS__ > ./config/routes.rb Rails.application.routes.draw do root 'welcome#index' end __EOS__ 4/18
  2. Bootstrap Gemfile Bundler gem 'therubyracer', platforms: :ruby echo "gem 'twitter-bootswatch-rails'"

    >> Gemfile echo "gem 'twitter-bootswatch-rails-helpers'" >> Gemfile bundle 5/18
  3. Bootswatch Theme Layout rails generate bootswatch:install yeti rails generate bootswatch:import

    yeti --force rails generate bootswatch:layout yeti cat << __EOS__ > ./app/controllers/welcome_controller.rb class WelcomeController < ApplicationController layout 'yeti' def index end end __EOS__ 6/18
  4. Hello, world! Container cat << __EOS__ > ./app/views/welcome/index.html.erb <div class="container">

    <div class="page-header" id="banner"> <div class="row"> <div class="col-lg-8 col-md-7 col-sm-6"> <h1>Welcome</h1> </div> </div> </div> </div> __EOS__ 7/18
  5. Resources Group User rails generate scaffold group name:string rake db:migrate

    rails generate bootswatch:themed Groups --force rails generate scaffold user name:string email:string rake db:migrate rails generate bootswatch:themed Users --force 9/18
  6. Navbar Partial cat << __EOS__ > ./app/views/layouts/_navbar.html.erb <ul class="nav navbar-nav">

    <%= content_tag(:li, class: controller_name == 'groups' ? :active : nil) do %> <% link_to :Groups, groups_path %> <% end %> <%= content_tag(:li, class: controller_name == 'users' ? :active : nil) do %> <% link_to :Users, users_path %> <% end %> </ul> __EOS__ 10/18
  7. References Member Groups Route rails generate scaffold member group:references user:references

    rake db:migrate rails generate bootswatch:themed Members --force resources :groups do resources :members end 11/18
  8. Link Groups Show Members Index <%= link_to t('.members', :default =>

    t("helpers.links.members")), group_members_path(@group), :class => 'btn' %> <%= link_to t('.new', :default => t("helpers.links.new")), new_group_member_path, :class => 'btn btn-primary' %> 12/18
  9. Model Group User class Group < ActiveRecord::Base has_many :members has_many

    :users, through: :members end class User < ActiveRecord::Base has_many :members has_many :groups, through: :members end 13/18
  10. Controller Before Action Create Private before_action :set_group, only: [:new, :create]

    @member = @group.members.new(member_params) def set_group @group = Group.find(params[:group_id]) end 14/18
  11. View Form Show <%= form_for [@group, @member], :html => {

    :class => 'form-horizontal' } do |f| %> <div class="form-group"> <%= f.label :user_id, :class => 'control-label' %> <%= f.collection_select :user_id, User.all, :id, :name, {prompt: "Select for a user"}, :class => 'form-control' %> </div> <dl class="dl-horizontal"> <dt><strong><%= model_class.human_attribute_name(:group_id) %>:</strong></dt> <dd><%= @member.group.name %></dd> <dt><strong><%= model_class.human_attribute_name(:user_id) %>:</strong></dt> <dd><%= @member.user.name %></dd> </dl> 15/18
  12. Octicons Bundler Plus echo "gem 'octicons-rails'" >> Gemfile bundle <%=

    link_to new_group_member_path, :class => 'btn btn-primary' do %> <span class="octicon octicon-plus"></span> <span><%= t('.new', :default => t("helpers.links.new")) %></span> <% end %> 16/18
  13. Gravatar Bundler Image Tag echo "gem 'gravatar_image_tag'" >> Gemfile bundle

    <td> <%= gravatar_image_tag(member.user.email, alt: member.user.name, gravatar: { size: 28 }) %> <%= member.user.name %> </td> 17/18