如何从 js.erb 视图中选择这个 div 元素

Posted

技术标签:

【中文标题】如何从 js.erb 视图中选择这个 div 元素【英文标题】:How to select this div element from js.erb view 【发布时间】:2020-01-16 14:43:15 【问题描述】:

我正在维护一个 ajax 请求,以在页面加载时获取所有评级。此渲染是在 rails 的 js.erb 视图中完成的。我想编辑 div 的数据速率值,但我不能同时选择它的类和 id。如何从 rails js.erb 视图中选择此 div 并更改此属性?

       <div class="col-sm-6 col-md-3">
           <div class="thumbnail">
               <div class="rating" id="<%= movie.id %>" data-rate-value=0></div>
               <%= link_to (image_tag movie.image.url(:medium), class: 'image'), user_movie_path(movie.user, movie) %>
               <% if movie.user == current_user %>
                   <br>
                   <%= link_to 'Edit', edit_user_movie_path(movie.user, movie), class: 'btn btn-primary' %>
                   <%= link_to "Remove", user_movie_path(movie.user, movie), method: :delete, data:  confirm: "You Sure?" , class: 'btn btn-primary' %>
               <% end %>
           </div>
        </div>
   <% end %>

This is my faulty solution

@ratings.each do |rating| %>
   $(".rating#<%= rating.movie.id %>").attr("data-rate-value", "<%= rating.score %>");
<% end %>

【问题讨论】:

I cannot select it with the class and id at the same time 这是什么意思?你看到任何错误吗?您是否在浏览器控制台上手动尝试过选择器?仅使用数字作为元素的 ID 听起来并不好,很容易错误地让多个元素具有相同的 ID。使用 movie_#movie.id 之类的东西作为元素的 id。 【参考方案1】:

你应该像这样定义你的 div id:

<div class="rating" id="rating_movie_<%= movie.id %>" data-rate-value=0></div>

并调用选择器

$("#rating_movie_#<%= rating.movie.id %>").attr("data-rate-value", "<%= rating.score %>");

【讨论】:

以上是关于如何从 js.erb 视图中选择这个 div 元素的主要内容,如果未能解决你的问题,请参考以下文章

$ 未在 Rails 应用程序中使用 Webpack 2 的 .js.erb 视图中定义

在rails中使用js.erb

j渲染视图后Javascript不起作用

渲染 js.erb 布局但 html.erb 视图文件

解决 Rails 3.2 中控制器的视图路径

js.erb 不在 Rails 6 中渲染