Rails JavaScript仅在刷新页面时加载,而不是在原始页面加载时加载,错误是什么?

时间:2015-01-03 01:35:23

标签: jquery ruby-on-rails coffeescript refresh turbolinks

代码在刷新页面时有效,但在原始负载时无效。

P P P P P P I I I I I I I Rails App 4.1.4。

应该发生什么

当你从索引页面点击Pin 时,它会显示在SHOW页面上 SHOW页面有一些 JavaScript 调整图片/ DIV

问题:

几乎每次我从索引页面单击一个Pin时,javascript都不会运行(不会调整图像/ div的大小)。

但是如果我使用网络浏览器点击REFRESH,脚本似乎总是运行得很好(图片/ Div得到调整就好了)。

链接到github上的js: https://github.com/growthcode/pinterest/blob/master/app/assets/javascripts/pins.js.coffee

这是Heroku的尝试: https://growthcode-pinterest.herokuapp.com/

SHOW pin的html:

<div class="container">
  <div class="row">
    <div id="showPinContainer" class="col-xs-12">
      <div id="showPin" class="well">
        <%= image_tag @pin.image, class: "show-image" %>
        <p class="description"><%= @pin.description %></p>
        <p><%= @pin.user.name %></p>
        <% if current_user == @pin.user %>
        <%= link_to 'Edit', edit_pin_path(@pin) %> |
        <% end %>
        <%= link_to 'Back', pins_path %>
      </div>
    </div>
  </div>
</div>

我用铁轨上的咖啡脚本写了这个,我列出了咖啡脚本和&#39; Js2coffee&#39;转换它。

咖啡脚本:

# Pin Show page
$ ->
  # set jQuery object variables
  $windowObj = $(window)
  $showPinContainer = $("#showPinContainer")
  $showPin = $("#showPin")
  $showPinImg = $("#showPin img")
  $showPinHeight = $("#showPin").outerHeight()
  $showPinImgWidth = $showPinImg.outerWidth()

  setShowPinContainerHeight = ->
    if $showPinHeight > 450
      $showPinContainer.outerHeight( $showPinHeight )
    else
      $showPinContainer.outerHeight( 450 )

  setShowPinContainerWidth = ->
    if $showPinImgWidth < 200
      $showPinImg.outerWidth( 200 )
    else if $showPinImgWidth > 300 
      $showPinImg.outerWidth( 300 )

  setShowPinContainerSize = ->
    setShowPinContainerHeight()
    setShowPinContainerWidth()

  setShowPinContainerSize()

上述咖啡脚本的Js2coffee.com转换:

$(function() {
  var $showPin, $showPinContainer, $showPinHeight, $showPinImg, $showPinImgWidth, $windowObj, setShowPinContainerHeight, setShowPinContainerSize, setShowPinContainerWidth;

  $windowObj = $(window);
  $showPinContainer = $("#showPinContainer");
  $showPin = $("#showPin");
  $showPinImg = $("#showPin img");
  $showPinHeight = $("#showPin").outerHeight();
  $showPinImgWidth = $showPinImg.outerWidth();

  setShowPinContainerHeight = function() {
    if ($showPinHeight > 450) {
      return $showPinContainer.outerHeight($showPinHeight);
    } else {
      return $showPinContainer.outerHeight(450);
    }
  };

  setShowPinContainerWidth = function() {
    if ($showPinImgWidth < 200) {
      return $showPinImg.outerWidth(200);
    } else if ($showPinImgWidth > 300) {
      return $showPinImg.outerWidth(300);
    }
  };

  setShowPinContainerSize = function() {
    setShowPinContainerHeight();
    return setShowPinContainerWidth();
  };

  return setShowPinContainerSize();
});

这是我关于Stack Overflow的第一个问题,所以如果还有其他任何我能提供帮助的问题,请告诉我。谢谢!

1 个答案:

答案 0 :(得分:4)

尝试禁用Turbolinks。有关详细信息,请参阅Rails Guides documentation on Turbolinks