Как использовать js.erb и частичку html.erb в Rails? - PullRequest
0 голосов
/ 06 января 2019

У меня есть список фильмов на странице, перед которой стоит список категорий. Изначально в списке фильмов будут фильмы всех категорий. Но когда пользователь нажимает одну категорию, я бы хотел, чтобы этот список заменялся фильмами только из выбранной категории.

<% @categories.each do |category| %>
  <tr><td><%= link_to category, '/movies/show_category', :category => category, :remote => true%></td></tr>
<% end %>

<div id="#movies_list">
<% @movies.each do |movie| %>
  <tr>
    <td><%= movie.title %></td>
    <td><%= movie.category %> </td>
    <td><%= movie.rating %></td>

    <% if !current_user.nil? %>
      <% if movie.user.email == current_user.email %>
        <td><%= link_to 'Show', movie, :class => "btn btn-primary"%></td>
        <td><%= link_to 'Edit', edit_movie_path(movie), :class => "btn btn-primary" %></td>
        <td><%= link_to 'Destroy', movie, method: :delete, data: { confirm: 'Are you sure?' }, :class => "btn btn-primary" %></td>
      <% end %>
    <% end %>
  </tr>
<% end %>
</div>

Я использовал div с id #movies_list, чтобы я мог заменить этот div, используя js и part.

Это мой show_category.js.erb файл:

$("#movies_list").html("<%= escape_javascript(render("show_category")) %>");

А это мой частичный _show_category.html.erb:

<% @movies_by_category.each do |key, value| %>
<tr>&nbsp;</tr>
<tr>&nbsp;</tr>

<% if key == params[:category]%>
<th> <%= key %> <th>
  <% value.each do |movie| %>
    <tr>
      <td><%= movie.title %></td>
      <td><%= movie.rating %></td>
      <% if false %>
      <td>
        <%= form_for @rating do |rating_form| %>
          <%= rating_form.number_field :rating, class: 'rating', 'data-size' => 'xs'%>
          <%= rating_form.submit 'Add', class: 'btn btn-primary btn-success' %>
        <% end %>
      </td>
      <% end %>
      <% if !current_user.nil? %>
        <% if movie.user.email == current_user.email %>
            <td><%= link_to 'Show', movie, :class => "btn btn-primary"%></td>
            <td><%= link_to 'Edit', edit_movie_path(movie), :class => "btn btn-primary" %></td>
            <td><%= link_to 'Destroy', movie, method: :delete, data: { confirm: 'Are you sure?' }, :class => "btn btn-primary" %></td>
        <% end %>
      <% end %>
    </tr>
  <% end%>
  <% end %>
<% end %>

Однако мой javascript никогда не вызывается! Что я здесь не так делаю? Пожалуйста, помогите!

...