I'm new on Ruby on Rails, it's my first time with MVC structure, and I need some help, how do I link a layout to a view page? I was looking through some tutorial but it looks so complicated and I'm so confused.
here is my view code:
<div class="container" id="login">
<div class="row">
<div class="span3"></div>
<div class="span9">
<% resource.remember_me = true %>
<%= form_for(resource, :as => resource_name, :url => session_path(resource_name), html:{role:"form", class:"form-horizontal" ,id:"form-login"}) do |f| %>
<div style="text-align: center; margin: 20px 0 20px 60px; width: 480px">
<%=image_tag 'logo_ras.gif' %>
</div>
<%= devise_error_messages! %>
<div class="control-group">
<%= f.label :email, {class:"control-label"} %>
<div class="controls">
<%= f.email_field :email, :autofocus => true %>
</div>
</div>
<div class="control-group">
<%= f.label :password, {class:"control-label"} %>
<div class="controls">
<%= f.password_field :password %>
</div>
<%=link_to "¿Olvidaste tu password?", new_user_password_path, {class: "controls"} %>
</div>
<%- if devise_mapping.rememberable? -%>
<div class="check-box">
<label><div class="controls"><%= f.check_box :remember_me %> No cerrar sesion </div></label>
</div>
<% end -%>
<div class="controls"><%= f.submit "Entrar", class:"btn btn-success" %></div>
<div style="text-align: center; margin: 20px 0 0 60px; width: 480px">
<%=link_to image_tag('banner.png'), "http://www.canalcolon.com", :target => "_blank" %>
<div>
Realización: <a href="http://www.gocnetworking.com" target="_blank">Gestió, Organització i Comunicació, S.A.</a><br/>
<%=link_to "Aviso legal", legal_path %>
</div>
</div>
<% end %>
</div>
</div>
</div>
There is a layout(header) appearing in my view and I want to remove that layout, but I dont see where in the controllers I can do that. Here is my layout that is appearing in my view:
<!DOCTYPE html>
<html>
<head>
<title>NK-RAS Personalizar es futuro</title>
<%= stylesheet_link_tag "application", :media => "all" %>
<%= javascript_include_tag "application" %>
<%= favicon_link_tag "favicon.png" %>
<%= favicon_link_tag "favicon_57_57.png", rel: "apple-touch-icon", sizes: "57x57" %>
<%= favicon_link_tag "favicon_72_72.png", rel: "apple-touch-icon", sizes: "72x72" %>
<%= favicon_link_tag "favicon_114_114.png", rel: "apple-touch-icon", sizes: "114x114" %>
<%= csrf_meta_tags %>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<%= render 'layouts/cookies' %>
<%if Rails.env=='production'%>
<script type="text/javascript">
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-46656081-1', ('https:' == document.location.protocol ? 'https://' : 'http://')+'www.ras-amgen.com');
ga('send', 'pageview');
</script>
<%end%>
<!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->
<!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
<script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
<![endif]-->
</head>
<body>
<div class="navbar navbar-fixed-top navbar-default" role="navigation">
<div class="navbar-inner">
<!--BUTTON BAR RESPONSIVE-->
<% if user_signed_in? and current_user.hospitals.count > 0 %>
<a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</a>
<% end %>
<!--APP NAME-->
<!--a class="brand" href="#">DeterminaRAS</a-->
<%=link_to(root_path) do%>
<%=image_tag("logo_ras_interior.gif",class:"brand")%>
<%end%>
<% if user_signed_in? and current_user.hospitals.count > 0 %>
<!--MENU OPTIONS-->
<div class="collapse nav-collapse">
<!-- <div class="nav navbar-nav navbar-left"> -->
<ul class="nav navbar-left">
<% if mobile_request? %>
<li><%= link_to("Determinaciones",determinaciones_path)%> <%#if can?(:index_det, Determinacion.new(medico_id: current_user.medico_id))%></li>
<li><%= link_to "Estadísticas",estadisticas_index_path %></li>
<li><%= link_to "Solicitudes",solicitudes_path if can?(:index_sol,Solicitud)%></li>
<% if can?(:crud, Hospital) && can?(:crud, Medico) %>
<li><%= link_to "Hospitales/médicos",solicitantes_hospitals_path %></li>
<% end %>
<% else %>
<li><%= link_to "Solicitudes",solicitudes_path if can?(:index_sol,Solicitud)%></li>
<% if can?(:crud, Hospital) && can?(:crud, Medico) %>
<li><%= link_to "Hospitales/médicos",solicitantes_hospitals_path %></li>
<%end%>
<li><%= link_to("Determinaciones",determinaciones_path) %> <%#if can?(:index_det, Determinacion.new(medico_id: current_user.medico_id)) %> </li>
<li><%= link_to "Estadísticas",estadisticas_index_path %></li>
<% end %>
</ul>
<ul class="nav navbar-right pull-right">
<li><%= link_to "Ayuda","/ayuda/menu.htm" %></li>
<li><%=link_to "#{current_user.whoami?}", perfil_path%></span></li>
<li><%= link_to "Salir", destroy_user_session_path, method: :delete %></li>
</ul>
</div>
<% end %>
</div>
</div>
</div>
<!-- <div id="container">
<% flash.each do |name, msg| %>
<%= content_tag :div, msg, id: "flash_#{name}" %>
<% end %>
</div>
-->
<div class="container-fluid" id="main-container">
<% flash.each do |name, msg| %>
<div class="alert alert-<%= name == :notice ? "success" : "error" %>">
<a class="close" data-dismiss="alert">x</a>
<%= msg %>
</div>
<% end %>
<%if user_signed_in? && mobile_request? %>
<div>
<%= yield %>
</div>
<% elsif user_signed_in? %>
<div id="signed_in">
<%= yield %>
</div>
<% else %>
<%= yield %>
<%end%>
</div>
<script type="text/javascript" src="https://eu-aa.appature.com/aa/12582914/script"></script>
<script type="text/javascript">aatracker.track();</script>
</body>
</html>
And here is the main controller (application controller):
class ApplicationController < ActionController::Base
protect_from_forgery
check_authorization :unless => :devise_controller?
before_filter :audit
helper_method :mobile_request?
def audit
audit = Audit.new
audit.controller = params[:controller]
audit.action = params[:action]
audit.url = self.env["REQUEST_URI"]
audit.ip = self.env["REMOTE_ADDR"]
audit.user_id = current_user.id if current_user
audit.save!
end
DEFAULT_MOBILE_AGENTS = %w(
palm
blackberry
nokia
phone
midp
mobi
symbian
chtml
ericsson
minimo
audiovox
motorola
samsung
telit
upg1
windows\ ce
ucweb
astel
plucker
x320
x240
j2me
sgh
portable
sprint
docomo
kddi
softbank
android
mmp
pdxgw
netfront
xiino
vodafone
portalmmm
sagem
mot-
sie-
ipod
up.b
webos
amoi
novarra
cdm
alcatel
pocket
ipad
iphone
mobileexplorer
mobile
maemo
fennec
silk
playbook
)
def mobile_agents
@mobile_agents ||= Regexp.union(DEFAULT_MOBILE_AGENTS)
end
def mobile_request?
(!(request.user_agent.to_s.downcase =~ mobile_agents).nil?) ||
(params[:mobile])
end
end
There are many ways layout can be used. If you want to call a specific layout for a given action, you should do that in your controller, not in your view. If you need to call in a view, to give a layout for a partial, then the syntax is different, you call the partial first and then the layout.
<%= render partial: "comments", layout: "two_column_landing" %>
If you just want your 2 column view to render in a particular controller then at the top of the controller before any method definitions call, under the class name
class ArticlesController < ApplicationController
layout "two_column_landing"
end
If you want to only call this layout for a specific action in the controller you can do it in the method render
def index
@people = Person.all
render layout: "multi-column"
end
You may refer to this question here for more details.
If you want to remove layout from all action in a controller, add layout false
after the class name.
class ArticlesController < ApplicationController
layout false
end
or if you can also specify for each action
def login
...
render layout: false
end
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.