2017-08-22 4 views
0

Ruby on Railsの新機能です。初めてのMVC構造です。いくつかの助けが必要です。レイアウトをビューページにリンクするにはどうすればいいですか? ?私はいくつかのチュートリアルを見ていたが、それはとても複雑に見えて、私はとても混乱している。レイアウトをRuby on Railsのビューページにリンクするには

は、ここで私の見解コードです:

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

あなたのコードの断片を持つあなたの質問明確にしてください:モデル、ビュー、コントローラ、ルートや目的を。 – cnnr

+0

こんにちは@cnnr私は質問を編集し、いくつかのコードを追加しました。 –

答えて

0

レイアウトを使用することができる多くの方法があります。特定のアクションに対して特定のレイアウトを呼び出す場合は、コントローラではなく、自分のビューで行う必要があります。ビューを呼び出す必要がある場合は、部分的なレイアウトを与えるために、構文が異なります。部分的に呼び出してからレイアウトを呼び出します。

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

あなただけの任意のメソッドの定義は、電話をかける前に、2カラム表示は、コントローラの上部に、特定のコントローラでレンダリングしたい場合は、クラス名の下に

class ArticlesController < ApplicationController 
    layout "two_column_landing" 
end 

あなただけしたい場合あなたはこの方法でそれを行うことができ、コントローラ内の特定のアクションが

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

をレンダリングするためにあなたが詳細については、この質問hereを参照することがこのレイアウトを呼び出します。

コントローラーのすべてのアクションからレイアウトを削除する場合は、クラス名の後ろにlayout falseを追加します。

class ArticlesController < ApplicationController 
    layout false 
end 

か、また、アクションごとに指定することができるかどう

def login 
    ... 
    render layout: false 
end 

Link to documentation

+0

こんにちは@ローザン答えに感謝しますが、私は削除したい私のビューに表示されているが、コントローラ上のリンクを見つけることができない特定のレイアウトがあります。コードは私の編集質問の上にあります –

+0

@CapitanDuke私は 'layout false'で答えを編集しましたが、レイアウトを完全に削除するには、おそらくそれが必要です。 – Roshan

+0

ありがとう、しかし、私はコントローラ内のクラスがどこにあるのかわかりません。レイアウトは私のビューにリンクしています。私はこのレイアウトがどこに私のビューにリンクしているのかはわかりませんが、コントローラ内にあるはずですが、私はそれを見ません。 –

関連する問題