0

我有一个带有 bulma 主题的 Ruby on Rails 6 项目。我的页面中有很多照片。我想打印人们看这些照片多少次的信息。

我也一直在研究https://github.com/charlotte-ruby/impressionist但我不确定这是否适用于 rails 6。

我正在使用 Ruby on rails 6.0.2.2 版本。当我使用 rails 5 时,这很重要。但是现在我使用 rails 6 并且我遇到了一些打字错误问题。

我知道问题出在哪里。但我无法解决这个问题。我需要帮助。

控制台错误信息错误照片

我的控制器

impressionist actions: [:show], unique: [:impressionable_type, :impressionable_id, :session_hash]

如果我删除:sission_hash我的项目正在运行。但我无法接受有多少人看到我的照片。无法正常工作只有 1 个人显示

射击.rb

is_impressionable

显示.html.erb

<div class="column is-3 is-offset-1">
    <div class="nav panel show-shot-analytics">
        <div class="panel-block views data">
            <span class="icon"><i class="fa fa-eye"></i></span>
                <%= pluralize(@shot.impressionist_count, 'View') %>
        </div>
        <div class="panel-block comments data">
        <span class="icon"><i class="fa fa-comment"></i></span>
        <%= pluralize(@shot.comments.count, 'Comment') %>
 </div>

印象.rb

# Use this hook to configure impressionist parameters
#Impressionist.setup do |config|
  # Define ORM. Could be :active_record (default), :mongo_mapper or :mongoid
  # config.orm = :active_record
#end

宝石文件

gem 'impressionist', '~> 1.6'

终端错误屏幕

Started GET "/shots/7" for ::1 at 2020-03-31 03:15:20 +0300
Processing by ShotsController#show as HTML
  Parameters: {"id"=>"7"}
  Shot Load (0.4ms)  SELECT "shots".* FROM "shots" WHERE "shots"."id" = ? LIMIT ?  [["id", 7], ["LIMIT", 1]]
  ↳ app/controllers/shots_controller.rb:85:in `set_shot'
  User Load (0.3ms)  SELECT "users".* FROM "users" WHERE "users"."id" = ? ORDER BY "users"."id" ASC LIMIT ?  [["id", 3], ["LIMIT", 1]]
Completed 500 Internal Server Error in 20ms (ActiveRecord: 0.7ms | Allocations: 4748)
TypeError - TypeError:

Started POST "/__better_errors/3ae8964a5ff3f901/variables" for ::1 at 2020-03-31 03:15:20 +0300

shot.js Javascrip 文档

document.addEventListener("turbolinks:load", function(){

var Shots = {
    previewShot(){
        if (window.File && window.FileList && window.FileReader) {

            function handleFileSelect(evt){
                evt.stopPropagation();
                evt.preventDefault();

                let files = evt.target.files || evt.dataTransfer.files;

                for (var i =  0, f; f = files[i]; i++) {
                    if (!f.type.match('image.*')) {
                        continue;
                    }
                    const reader = new FileReader();

                    reader.onload = (function(theFile){
                        return function(e){
                            //Render thumbnail
                            let span = document.createElement('span');
                            span.innerHTML = ['<img class="thumb" src="', e.target.result,
                                    '" title="', escape(theFile.name), '"/>'
                                ].join('');
                            document.getElementById('list').insertBefore(span, null);
                        };

                    })(f);
                    reader.readAsDataURL(f);
                }
            }

            function handleDragOver(evt){
                evt.stopPropagation;
                evt.preventDefault;
                evt.dataTransfer.dropEffect = 'copy';
            }

                const dropZone = document.getElementById('drop_zone');
                const target = document.documentElement;
                const fileInput = document.getElementById('shot_user_shot');
                const previewImage = document.getElementById('previewImage');
                const newShotForm = document.getElementById('new_shot');

            if(dropZone){
                dropZone.addEventListener('dragover', handleDragOver, false);
                dropZone.addEventListener('drop', handleFileSelect, false);


            dropZone.addEventListener('dragover', (e) => {
                dropZone.classList.add('fire');
            },false);

            dropZone.addEventListener('dragleave', (e) => {
                dropZone.classList.remove('fire');
            }, false);

            dropZone.addEventListener('drop', (e)=>{
                e.preventDefault();
                dropZone.classList.remove('fire');
                fileInput.files = e.dataTransfer.files;
                //if on shot/id/edit hide preview image on drop
                if(previewImage){
                    previewImage.style.display = 'none';
                }
                if (newShotForm) {
                    dropZone.style.display = 'none';
                }
            }, false);
            // Body Specific
            target.addEventListener('dragover', (e)=> {
                e.preventDefault('dragging');
            }, false);
            // removes dragging class to body when not dragging
            target.addEventListener('dragleave', (e)=>{
                dropZone.classList.remove('dragging');
                dropZone.classList.remove('fire');
            }, false);

            }

        }
    },
            shotHover() {
                $('.shot').hover(function() {
                    $(this).children('.shot-data').toggleClass('visible');
                });
            }
    };
    Shots.previewShot();
    Shots.shotHover();

});
4

0 回答 0