gpt4 book ai didi

ruby-on-rails - 将变量从 View 传递到 View 外的模型

转载 作者:太空宇宙 更新时间:2023-11-03 16:21:04 25 4
gpt4 key购买 nike

如何将变量传递到 View 外的模型?问题是,我不得不将模型移动到 application.html.erb因为有 z-index conflictsproducts/index.html.erb 中包含模态代码查看。

例如,我想传递 <%= product.id %>模态弹出窗口的变量。

产品/index.html.erb

<% products.each do |product| %>
<button type="button" class="btn btn-primary btn-lg" data-toggle="modal" data-target="#productDetails" productId="<%= product.id %>">
Launch <%= product.id %>
</button>
<% end %>

layouts/application.html.erb

<!DOCTYPE html>
<html>
<head>
<title>Test</title>
<%= stylesheet_link_tag 'application' %>
<%= javascript_include_tag 'application', 'data-turbolinks-track' => true %>
<%= csrf_meta_tags %>
</head>
<body>
<div id="page-wrapper">
<%= render 'layouts/header' %>
<%= yield %>
<%= render 'layouts/footer' %>
</div>

<!-- Modal -->
<div class="modal fade" id="productDetails" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title" id="myModalLabel">Modal title</h4>
</div>
<div class="modal-body product-content">
...
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
<button type="button" class="btn btn-primary">Save changes</button>
</div>
</div>
</div>
</div>

</body>
</html>

尝试

我尝试添加 javascript 来传递变量,但没有显示任何内容:

<script>
$('#productDetails').on('show.bs.modal', function(e) {

var $modal = $(this),
productId = e.relatedTarget.productId;

$.ajax({
cache: false,
type: 'POST',
url: 'backend.php',
data: 'EID=' + productId,
success: function(data) {
$modal.find('.product-content').html(productId);
}
});
})
</script>

我还尝试在 products/index.html 中添加部分内容, 但不能从 products/index.html.erb 中调用模态因为 z-index 冲突。

最佳答案

我不知道 php 部分是关于什么的。然而,忽略那部分并假设没有人会做那样的事情,这里是你如何在 rails 中处理这个:

  1. 使用 link_to 使按钮成为远程方法调用(像这样):

    <% products.each do |product| %>
    <%= link_to 'Launch', product, { data: { toggle: 'modal', target: '#productDetails' }, class: 'btn btn-primary btn-lg', remote: true } %>
    <% end %>
  2. 为名为 products/show.js.erb 的节目创建 js.erb 文件(假设@product 已在 Controller 中定义):

    $('#productDetails').html("<%= j render partial: 'show', locals: { product: @product } %>");
  3. 将模态 div 下的所有内容移到 products/_show.html.erb 部分:

    <div class="modal-dialog" role="document">
    <div class="modal-content">
    <div class="modal-header">
    <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
    <h4 class="modal-title" id="myModalLabel">Modal title</h4>
    </div>
    <div class="modal-body product-content">
    ...
    </div>
    <div class="modal-footer">
    <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
    <button type="button" class="btn btn-primary">Save changes</button>
    </div>
    </div>

关于ruby-on-rails - 将变量从 View 传递到 View 外的模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33317223/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com