从ajax打印数据

从ajax打印数据

问题描述:

So this is the first time ive used ajax with rails, Ive managed to get the "data" back from the controller... how do i now print this out on the page? Im finding information on ajax online but 9 cant find any code the same as mine to reference?

The code changes the order in which details are displayed ASC to DESC.

JS FILE

  $(".ord-dir-link").on("click", function(e){
    e.preventDefault();
      $.ajax({
        url: '/index_list',
        method: 'get',
        data: jQuery.param({
        option: this.href.split("=")[2],
        direction: $('.list-direction').val()
        }),
        contentType: 'application/x-www-form-urlencoded; charset=UTF-8',
        success: function(data){
          console.log(data)
        }
      })
  });

CONTROLLER

    def index_list
      if params[:option]
        @products = @products.order("#{params[:option]} #{params[:direction]}")
        respond_to do |format|
        format.json { render json: @products.to_json }
        end
      end
    end

AND THE VIEW

    <div class="right-content">
      <table class="index-list">
        <tr>
          <th>Id</th>
          <th><%= link_to "Name", index_list_path(option: "product_name"), class: "ord-dir-link"%></th>
          <th><%= link_to "Type", index_list_path(option: "type_of_product"), class: "ord-dir-link" %></th>
          <th><%= link_to "Section", index_list_path(option: "section"), class: "ord-dir-link" %></th>
          <th><%= link_to "Category", index_list_path(option: "category"), class: "ord-dir-link" %></th>
          <th><%= link_to "Price", index_list_path(option: "price"), class: "ord-dir-link" %></th>
          <th><%= link_to "Discount", index_list_path(option: "discount"), class: "ord-dir-link" %></th>
          <th><%= link_to "Views", index_list_path(option: "click_counter"), class: "ord-dir-link" %></th>
          <th><%= link_to "Upvotes", index_list_path(option: "upvotes"), class: "ord-dir-link" %></th>
          <th><%= select_tag(:direction, options_for_select([ ['ASC', "ASC"], ['DESC', "DESC"]] ), {:class => 'list-direction'})  %></th>
        </tr>
        <% n = 1 %>
        <% @products.each do |x| %>
        <tr>
          <td><%=n%>.</td>
          <td><%=x.product_name%></td>
          <td><%=x.type_of_product%></td>
          <td><%=x.section%></td>
          <td><%=x.category%></td>
          <td>£<%=x.price%></td>
          <td><%=x.discount if x.discount != nil%></td>
          <td><%=x.click_counter%></td>
          <td><%=x.upvotes%></td>
          <td><%=link_to "View", product_path(x.id)%></td>
          <% n += 1 %>
          <%end%>
        </tr>
      </table>
    </div>

Do i need to append the whole thing written out in javascript? it seems kind of long and clunky way to do it.

Just to expand on what Taplar said, you would do something like:

$(".ord-dir-link").on("click", function(e){
  e.preventDefault();
    $.ajax({
      url: '/index_list',
      method: 'get',
      data: jQuery.param({
      option: this.href.split("=")[2],
      direction: $('.list-direction').val()
      }),
      contentType: 'application/x-www-form-urlencoded; charset=UTF-8',
      success: function(data){
        $('#some-selector').html(data)
      }
    })
});