【问题标题】:rails 6 dynamic bootstrap modal using js.erb error使用 js.erb 错误的 rails 6 动态引导模式
【发布时间】:2021-08-30 19:16:56
【问题描述】:

我正在尝试动态显示引导模式,因此每次用户单击记录时,它都会显示具有该记录信息的模式。我不想每次重新加载页面时都显示所有记录的模式。

我在浏览器控制台中收到此错误。

SyntaxError: Unexpected token '==='

控制器

events_controller.rb

def pay
  @event = Event.find(params[:id])
  respond_to do |format|
    format.js{}
  end
end

查看

index.html.erb

<%= link_to pay_path(id: event.id), remote: true, class: "", method: :patch do %>
  Paid <i class="fe fe-dollar-sign"></i>
<% end %>

支付视图

    _pay.html.erb

    <!-- Modal: pay invoice -->
    <div class="modal fade show" id="pay_invoice" tabindex="-1" role="dialog" aria-hidden="true">
        <div class="modal-dialog modal-dialog-vertical" role="document">
            <div class="modal-content">
                <div class="modal-body">
                  <!-- Modal body -->
                </div>
            </div>
        </div>
    </div>

js.erb

pay.js.erb

document.querySelector("#pay_invoice").insertAdjacentHTML('afterbegin', "escape_javascript(<%= render partial: 'pay', locals: {event: @event} %>)");
document.querySelector("#pay_invoice").modal('show');

路线

routes.rb

patch "events/:id/pay", to: "events#pay", as: :pay

有什么帮助吗?

【问题讨论】:

  • 您的浏览器显示错误发生在哪个文件和哪一行?

标签: javascript ruby-on-rails ruby webpack ruby-on-rails-6


【解决方案1】:

您需要将 ERB 标签向外移动,以便实际调用escape_javascript

document.querySelector("#pay_invoice").insertAdjacentHTML(
  "afterbegin", 
  "<%= escape_javascript(render partial: 'pay', locals: { event: @event }) %>"
);

您收到语法错误的原因是您输出的部分未转义,并且它包含至少一个结束字符串的双引号。

【讨论】:

  • 嗯,这至少是您的代码存在的问题之一。语法错误可能在其他地方。
  • 我刚刚更新我的问题,你可以看到错误显示在哪里@max
猜你喜欢
  • 2021-01-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-27
  • 1970-01-01
  • 1970-01-01
  • 2021-03-21
相关资源
最近更新 更多