使用jquery重新渲染页面

Re-render a page using jquery

本文关键字:新渲染 jquery 使用      更新时间:2023-09-26

在react中,我可以通过传递来自控制器的结果轻松地重新呈现视图。我不希望在这个阶段使用React,想知道是否可以使用JQuery?

我在页面上有几个对象,当点击时,我应该看到它的内容。点击另一个对象,我看到它的内容等等。理解吗?这个运球给了我灵感。

我可能做得不对,但这就是我所拥有的:

控制器:

def index
  selected_contract = params[:selected_contract] || current_user.contracts.last.id
  @contracts = current_user.contracts.order(created_at: :desc).all
  @selected_contract = current_user.contracts.find_by(id: selected_contract)
end

视图:

<% @contracts.each do |contract| %>
  <button class="ui button test" id="<%=contract.id%>"><%=contract.name%></button>
<% end %>
......................................
When clicked, show its content
....................................
<%= @selected_contract.name %>

JS:

$( ".ui.button.test" ).click(function(e) {
  let { id } = this
  console.log(id)
  $.ajax({
    url: `/url/${id}`,
    type: 'POST',
    success: function(result) {
      //$('#listview').redraw()
      console.log('success')
    }
  });
});

路由设置正确,所以我得到控制器中的参数很好。是否有一个重新渲染视图,就像渲染一个道具在React的jquery?我这样做对吗?

如果你正在使用jquery listview,这应该可以工作。

$( "#listview" ).listview( "refresh" );

参考https://api.jquerymobile.com/listview/method-refresh

或者因为它是rails,你也可以在服务器端重新加载或渲染部分视图