Rails Controller and namespace

namespace

Routing

config/routes.rb

namespace :admin do
   root 'top#index'
end

controllername#actionname
We can access http://localhost:3000/admin

Controller

rails g controller admin/top

app/controllers/admin/top_controller.rb
app/views/admin/top

Action

app/controllers/admin/top_controller.rb

class Admin::TopController < ApplicationController
   def index
      render action: 'index'   # use index template
   end
end
&#91;/ruby&#93;
render : ERB template, app/views/admin/top/index.html.erb

<h4>Layout</h4>
<b>app/views/layouts/applicaiton.html.erb</b>

<hr>
<h3>Layout</h3>
Use <b>layout</b> in controller
app/controllers/application_controller.rb
[ruby]
layout :set_layout
private 
def set_layout
   if params[:controller].match(%r{\A(admin|general)/})
      Regexp.last_match[1]
   else
      'general'
   end
end

Partial Template

<div id="wrapper">
  <%= render 'shared/header' %>
  <div id="container">
     <%= yield %>
  </div>
  <%= render 'shared/footer' %>
</div>

shared/header and shaerd/footer are template.
Let’s make app/views/shared, named _header.html.erb

Header, Footer

_header.html.erb

<header>
</header>

_footer.html.erb

<footer>
  <p>Powered by Application &copy; 2014 atmarkplant</p>
</footer>

Render

<%= render 'shared/header' %>
<%= render 'shaerd/footer' %>

Helper Method

render is one of Helper method
Example app/helpers/application_helper.rb

module ApplicationHelper
   def document_title
     if @title.present?
       "#{@title} - Application"
     else
       'Application' end
     end
end

How to call in view erb

<%= document_title %>

Asset Pipeline

Target is app/assets images, javascripts, stylesheets

Sass SCSS

Sass (Syntactically Awesome Stylesheets)
Extend style sheets .css.scss

Stylesheet setting is in app/assets/stylesheets/application.css

Example) app/assets/stylesheets/_colors.css.scss

$dark_gray: #666666;
$gray: #cccccc;
$light_gray: #eeeeee;
$very_light_gray: #fafafa;
$dark_cyan: #448888;
$very_dark_cyan: darken($dark_cyan, 25%);

Use scss template

@import 'colors';
background-color: $dark_gray;

Sass
Dimension _dimentions.css.scss

narrow: 2px;
$moderate: 6px;
$wide: 10px;
$very_wide: 20px;

How to use

@import
div {
   padding: ($wide + $very_wide * 2);
}

Prepare for production

Create secret key for production

This is after Rails 4.1 API key
config/secrets.yml

production:
    secret_key_base: <%= ENV&#91;"SECRET_KEY_BASE"&#93; %>

Create security code and export SECRET_KEY_BASE

ruby -e 'require "securerandom"; print SecureRandom.hex(64)'

Export(Use output of SecureRandom.hex(64))

export SECRET_KEY_BASE=''

Database

rake db:create RAILS_ENV=production

config/environments/production.rb

config.serve_static_assets = true

Run asset precompile

rake assets:precompile

Run production mode

rails s -e production