繁体   English   中英

如何在Ruby on Rails上将布局链接到视图页面

[英]how do I link a layout to a view page on Ruby on Rails

我是Ruby on Rails的新手,这是我第一次使用MVC结构,我需要一些帮助,如何将布局链接到视图页面? 我在看一些教程,但看起来太复杂了,我很困惑。

这是我的查看代码:

<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>

我的视图中出现一个布局(标题),我想删除该布局,但是我看不到在控制器中可以执行的操作。 这是在我的视图中显示的布局:

 <!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>

这是主控制器(应用程序控制器):

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

有很多方法可以使用布局。 如果要为给定操作调用特定的布局,则应在控制器中而不是在视图中进行。 如果需要在视图中调用,以给出局部布局,则语法是不同的,先调用局部,然后再调用布局。

<%= render partial: "comments", layout: "two_column_landing" %>

如果只希望在特定的控制器中呈现2列视图,则在调用任何方法定义之前,在控制器顶部的类名下

class ArticlesController < ApplicationController
  layout "two_column_landing"
end

如果只想为控制器中的特定操作调用此布局,则可以在render方法中进行

def index
  @people = Person.all
  render layout: "multi-column"
end 

您可以在此处参考此问题以获取更多详细信息。

如果要从控制器的所有操作中删除布局,请在类名称后添加layout false

class ArticlesController < ApplicationController
  layout false
end

或者您也可以为每个动作指定

def login
  ...
  render layout: false
end

链接到文档

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM