如何在Rails中的Index / Show to Order页面之间传递变量?

时间:2018-01-24 15:37:17

标签: javascript jquery ruby-on-rails

所以我使用Ruby / jQuery / JavaScript混合将信息从我的索引/显示页面传递到Order页面。在我的索引/显示视图中,我有以下内容:

<%= link_to 'Get a Collectible', order_books_path(:id => book.id), class: "btn merch%>

然后在我的订单视图中,我有:

<div class="image-container <%= 'active' if books.id == params[:id].to_i%>" image-var="<%books.book_image%>">
<%= image_tag books.book_image, class: "book-image" %>

很好,所以如果点击订单页面,我会传递书籍ID,然后将该书标记为活动状态。要阅读并维护页面上的“活动”更改,我正在使用以下JS进行解析:

function getParameterByName(name, url) {
    if (!url)
        url = window.location.href;
    name = name.replace(/[\[\]]/g, "\\$&");
    var regex = new RegExp("[?&]" + name + "(=([^&#]*)|&|#|$)"),
        results = regex.exec(url);
    if (!results)
        return null;
    return decodeURIComponent(results[2].replace(/\+/g, " "));
}

然后在订单页面上更改以下jQuery:

var $link = $('.img-container1');
        $('.img-group').on('click', '.img-container1', function() {
            $link.removeClass('active');
            $(this).addClass('active');
            $('input[name="image"]').val(this.getAttribute('image-var')).change();
        });

        var type = getParameterByName('type');
        var image = getParameterByName('image');

最后在jQuery中将转移从Show页面更改为Order页面:

$(function() {
            $('div [button_type="' + type + '"]').addClass('btn wk-prd-btn pink');
            $('div [image-var="' + image + '"]').addClass('active');
            $('input[name="image"]').val(image).change();
        });

所以这就是所有的代码。它运行得很好,除了我需要将image-var传递给HubSpot进行图像选择。我检查了页面,确定它没有通过image-var。所以我在这里做了一个改变:

<div class="image-container <%= 'active' if books.id == params[:id].to_i%>" image-var="<%books.book_image.to_s%>">

我在最后添加了.to_s,确定图像文本通过但没有大小写,最后它丢失了.jpg(正在使用)。

那么如何在我可以传递的视图之间维护/传递变量?

1 个答案:

答案 0 :(得分:0)

如此愤怒。答案实际上是输出变量。所以

image-var="<%=books.book_image.to_s%>">