簡體   English   中英

如何在Rails上的ruby中訪問rails助手和嵌入資產javascript文件內的ruby?

[英]How do I access rails helpers and embedded ruby inside assets javascript files in ruby on rails?

我有一個顯示和隱藏div,它在單擊時顯示和隱藏注釋。 默認情況下,單擊之前它會顯示消息計數以及一些向下箭頭,例如

“ 55條評論[向下箭頭]”

單擊后變為:

“隱藏評論[向上箭頭]”

我使用此代碼默認顯示評論數量和箭頭(用戶/新用戶):

    <span class="commentsCount"><%= pluralize(m.comments.count, 'comment') %></span>
    <span class="commentArrows"><%= image_tag 'view_all_comments.png' %> </span>

我使用JQuery來幫助實現更改(users / load_comments.js.erb):

$('.postHolder').off().on('ajax:success', '.view_all_comments', function(){

    var postContent = $(this).parents('.post_content'),
        commentContainer = postContent.find('.comment_container'),
        getComments = "<%= j render 'users/partials/show_all_comments' %>";
        commentContainer.slice(0, -2).remove();

// The next 2 lines replace the comment count with "Hide comments" and up arrows"

          postContent.find('.commentsCount').html("Hide comments");
          postContent.find(".commentArrows img").prop("src", "/assets/up_arrows.png");

             postContent.find('.comment_container:first').before(getComments);
});

現在重要的部分是當再次單擊“ 隱藏注釋”時。 我需要它來恢復顯示評論數。 我可以將箭頭還原為原始箭頭,但文本中看不到還原為注釋帳戶的方法,因為我無法訪問asset / javascripts / users.js文件中的rails助手和實例變量等。

以下是代碼(assets / javascripts / users.js:

    // for showing and hiding comments

        $('.expandComments').click(function() {

        var showAllCommentsSubmit = $(this).find('.showAllCommentsSubmit'),
            postContent = $(this).parents('.post_content'),
            commentContainer = postContent.find('.comment_container');


            if ($(this).hasClass('visible')) {
                postContent.find(".comment_container").slice(0, -1).hide();
                postContent.find(".commentArrows img").prop("src", "/assets/view_all_comments.png");

//Here is where I need the code to replace the "Hide comments" text.

            }  else {


                if (showAllCommentsSubmit.is(':disabled')) {
                    postContent.find(".comment_container").show();
                    postContent.find(".commentArrows img").prop("src", "/assets/hide_comments.png");

                } else {
                    showAllCommentsSubmit.trigger('submit');
                    showAllCommentsSubmit.prop({disabled: true});
                    postContent.find(".commentArrows img").prop("src", "/assets/comments-loader.gif");
                }
            }

            $(this).toggleClass('visible');

        });

由於我認為無法在資產javascript文件中使用嵌入式ruby / rails幫助器,因此我將如何實現我要實現的目標。

有什么方法可以在其他html之上顯示一些html,然后在不再需要它時將其刪除,並再次顯示下面的html?

我敢肯定,我可以提出其他一些解決方案,例如發揮一些CSS的作用..具有div的隱藏和顯示功能,但我還沒有弄清楚該怎么做。 想知道是否有快速解決方案。

您可以在資產代碼中使用Rails幫助器。 users.js users.js.erb ,您只需要將您的資產從users.js重命名為users.js.erb ,Rails會在將內容作為JavaScript發出之前使用ERb對其進行預處理。

有關詳細信息,請查閱關於資產管道中的預處理Rails指南

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM