gpt4 book ai didi

javascript - 在没有 Asset Pipeline 的情况下在 Rails 中渲染 Javascript

转载 作者:行者123 更新时间:2023-12-03 11:58:55 27 4
gpt4 key购买 nike

我的问题

我正在开发一个 Rails 站点,并希望根据某些条件使用 Javascript 在我的一些 View 中呈现部分内容。例如,如果用户在访问某些页面时未登录,我希望在模式框中显示 Devise 登录/登录提示的部分 View 。

我在解决这个问题时遇到了很多麻烦 - 第一个问题是我尝试使用 render在 Assets 管道中,经过一些研究发现一开始就行不通。

然后我尝试将 js.erb 文件放入我的 public/javascripts 中文件夹但 javascript_include_tag强制将“.js”附加到文件名并使用常规 src=/javascripts/...没有呈现“.erb”内容,而是会附加文本 <%=j render :partial ... %>

我的解决方案

我在这里提出了这个解决方案,想知道是否有更好的解决方案来保持代码干净。我将使用一些其他 Javascript 来在不同的 View 上呈现相同的内容。

我创建了一个app/views/shared/javascripts我将放置 [filename].html.erb 的目录文件。

为了让 Javascript 正确运行,我将 <%= render :partial => 'shared/javascripts/...' %>无论我希望在哪里运行该脚本。

该脚本内部类似于:

<script>
$(document).ready(function() {
...
$(.class).append("<%=j render :partial => 'shared/modal' %>");
...
});
</script>

有更好的方法吗?

据我所知——这将实现我想要的功能。我只是担心我对这一切的看法都是错误的。我将在应用程序的另一部分工作一段时间,我真的希望验证这是可以接受的和体面的,或者找到正确的方法来确保我可以在我的 JS 文件中使用 ERB。

最佳答案

我知道这个答案对于 OP 来说晚了 3 年,但我发现这个问题在谷歌上搜索了其他东西,并认为我会回答它,因为这是我们在旧版应用程序中经常做的事情。

假设您想要渲染 javascript alert("Hello, world!")。您可以在文件夹 app/views/my_resources 中创建部分 _greetings.js.erb:

alert('<%= @msg %>')

并从 Controller 操作中调用它:

@msg = "Hello, world!"
render partial: 'my_resources/greetings', formats: :js

希望对某人有帮助。

关于javascript - 在没有 Asset Pipeline 的情况下在 Rails 中渲染 Javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25490699/

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