0

ファイルをどこに置くかに関して、これは本当にばかげていると確信していますが、ここに行きます:

gem (zurb-foundation)、rails 3、ruby 1.9.3 を使用して Foundation 4 を試しています。ジョイライド機能を動作させようとしています。

これが私がこれまでに持っているものです:

<body>
<h1>Listing products</h1>
 <div id="firstStop" class="panel">Some awesome part of your site!</div>
<table>
  <tr>
    <th> <h2 id="numero1" class="so-awesome">Name</h2></th>
    <th><h3 id="numero2">Price</h3></th>
    <th></th>
    <th></th>
    <th></th>
  </tr>

<% @products.each do |product| %>
  <tr>
    <td><%= product.name %></td>
    <td><%= product.price %></td>
    <td><%= link_to 'Show', product %></td>
    <td><%= link_to 'Edit', edit_product_path(product) %></td>
    <td><%= link_to 'Destroy', product, method: :delete, data: { confirm: 'Are you sure?' } %></td>
  </tr>
<% end %>
</table>

<br />
<%= link_to 'New Product', new_product_path, class: "button radius" %>

<ol class="list_index_tour" data-joyride>
  <li data-id="firstStop" data-text="Next">
    <p>Hello and welcome to the Joyride documentation page.</p>
  </li>
  <li data-id="numero1" data-class="custom so-awesome" data-text="Next">
    <h4>Stop #1</h4>
    <p>You can control all the details for you tour stop. Any valid HTML will work inside of Joyride.</p>
  </li>
  <li data-id="numero2" data-button="Next" data-options="tipLocation:top;tipAnimation:fade">
    <h4>Stop #2</h4>
    <p>Get the details right by styling Joyride with a custom stylesheet!</p>
  </li>
  <li data-button="Next">
    <h4>Stop #4</h4>
    <p>It works as a modal too!</p>
  </li>
</ol>

<script>
  $(window).load(function() {
    $("#list_index_tour").joyride({
    });
  });
</script>

私のapplication.html.erbで:

<!DOCTYPE html>
<!-- paulirish.com/2008/conditional-stylesheets-vs-css-hacks-answer-neither/ -->
<!--[if lt IE 7 ]> <html class="ie6" lang="en"> <![endif]-->
<!--[if IE 7 ]>    <html class="ie7" lang="en"> <![endif]-->
<!--[if IE 8 ]>    <html class="ie8" lang="en"> <![endif]-->
<!--[if (gte IE 9)|!(IE)]><!--> <html lang="en"> <!--<![endif]-->
  <head>
    <meta charset="utf-8" />

    <!-- Uncomment to make IE8 render like IE7 -->
    <!-- <meta http-equiv="X-UA-Compatible" content="IE=7" /> -->

    <!-- Set the viewport width to device width for mobile -->
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />

    <title><%= content_for?(:title) ? yield(:title) : "Untitled" %></title>

    <%= stylesheet_link_tag    "application" %>
    <%= javascript_include_tag "vendor/custom.modernizr" %>
    <%= csrf_meta_tags %>

    <!-- /* Attach the Joyride CSS file */ -->
<link rel=" stylesheet" type="text/css" href="jquery.joyride-2.0.css">

<!--/* jQuery needs to be attached */ -->
<script src="jquery-1.8.3.min.js"></script>

<!--/* Then attach the Joyride plugin */ -->
<script src="jquery.joyride-2.0.3.js"></script>
  </head>

  <body>

  <nav class="top-bar">
  <ul class="title-area">
    <li class="name">
      <h1><%= link_to "Awesome Store", products_path %></a></h1>
    </li>
  </ul>
  <section class="top-bar-section">
    <ul class="right">
      <li class="divider"></li>
      <li><%= link_to "Browse Products", products_path %></li>
      <li class="divider"></li>
      <li><%= link_to "Price List" %></li>
      <li class="divider"></li>
      <li><%= link_to "Contact Us" %></li>
      <li class="divider"></li>
      <li><%= link_to "Cart" %></li>
    </ul>
  </div>
</nav>

<div class="row">
  <div class="small-8 columns"><%= yield %></div>
  <div class="small-4 columns">
    <h2 class="subheader">About Us</h2>
    yatta yatta yatta
  </div>
</div>


    <%= javascript_include_tag "application" %>



  </body>
</html>

そして私のapplication.jsで

//= require jquery
//= require jquery_ujs
//= require foundation
//= require jquery.joyride-2.0.3
//= require modernizr.mq
//= require jquery.cookie
//= require_tree .

$(function(){ $(document).foundation(); });

アプリケーション.css

 *= require_self
 *= require foundation_and_overrides
  *= require joyride-2.0.3
 *= require_tree .
 */

jquery.joyride-2.0.3.js、modernizr などのファイルを app/assets/javascripts/ ディレクトリの下に配置しました。

私が得るのは悲しいリストだけです:-(

この質問 hereの提案に従おうとしましたが、役に立ちませんでした。

ヘルプ?

4

1 に答える 1

3

サマンサ

コードの最初の問題は、jQuery セレクターが#シンボルを使用していることです。これは、その ID を持つ DOM 要素を探していることを意味します。ただし、ツアーの HTML マークアップには<ol>ID が指定されておらず、クラスのみが指定されています。

したがって、最初の修正は、単に更新することです<ol>

から:

<ol class="list_index_tour" data-joyride>

に:

<ol id="list_index_tour" data-joyride>

ただし、セレクターが正しく、それを理解した場合でも、同様の問題に遭遇しました-以下を参照してください。残念ながら、Zurb 独自のセットアップ手順は誤解を招くものです。ガイド ツアーの手順を保持するリストには、任意の ID を使用できると言われて<ol>いますが、実際にはそのままでは使用できません。

Joyride の Zurb のコードは、CSS/Javascript 間の特定の ID に依存しています。この ID と関連するコードは、含まれている joyride.css ファイル内にあります。そこで使われているIDが「joyRideTipContent」です。関連する数行のコードを joyride.css ファイルから貼り付けました (一番上にあります)。

#joyRideTipContent { display: none; }
.joyRideTipContent { display: none; }

別の ID を使用したい場合は、css ファイル内の上記のコードを次のように変更するだけで機能します (上記のコード スニペットの名前を含めました)。

#list_index_tour{ display: none; }
.list_index_tour{ display: none; }

または、ID とセレクターを<ol>joyRideTipContent に変更するだけで、すぐに使用できます。

最後に、関連する Javascript および CSS ファイルを含めるための Rails のコード参照は問題ありません。プラグインが機能していないときに、すべてのベースをカバーしようとしていた可能性があります。ただし、Sprockets を joyride js および css ファイルに使用し、さらに application.html.erb に JS および CSS スタイルシート タグを含めることは重複しているという点で、コードは DRY ではありません。

完全な重複以外では、このアプローチは、ファイルを変更して両方の場所で更新するのを忘れたときにアプリを維持するため、時間の経過とともに問題を引き起こす可能性があります。インクルードの順序によっては、競合が発生する可能性もあります。

Rails Sprockets と Asset Pipeline はフレームワークに含まれる非常に強力なツールであるため、これに固執し、application.html.erb から重複した参照を削除することをお勧めします。

したがって、重複タグの側面については...これらを保持してください:

  • アプリケーション.js

    //= jquery.joyride-2.0.3 が必要

  • アプリケーション.css

    *= joyride-2.0.3 が必要

ここから参照を削除します。

  • Application.html.erb

于 2013-08-10T07:03:12.993 に答える