繁体   English   中英

在jQuery中使用Rails html标签

[英]Using Rails html tags in jquery

我想知道我是否可以使用jquery在html中使用rails标记以基于新查询重新加载表。 见下文:

    <table id = "PlyrsTm2" style = float:right>
        <tr><th id="PTTitle" colspan=2>List of players on selected team</th></tr>
        <tr><th id="PTHRows">Player</th><th id="PTHRows">Team</th></tr>
        <% @pl.each do |f| %>
            <tr><td class="player"><%= f.Plyr %></td><td class="team"><%= f.Team %></td></tr>
        <% end %>
    </table>

所以我知道我可以做到这一点:

$('#PlyrsTm2').html('<table id = "PlyrsTm2" style = float:right><tr><th id="PTTitle" colspan=2>List of players on selected team</th></tr><tr><th id="PTHRows">Player</th><th id="PTHRows">Team</th></tr><tr><td class="player"></td><td class="team"></td></tr></table>

但是,如果我将rails部分添加到其中,则它不会刷新/重新加载表。 我在互联网上四处张望,却找不到解决方案。 我发布了与此类似的问题,但没有人回答,由于研究不足(不正确)而被否决,因为我只发布了我找不到的问题,所以有人可以帮我解决这个问题,我会不胜感激

再-更新

发布我正在使用的ajax和jquery可能会有所帮助:

$(document).ready(function(){
    $('#showbtn').on('click', function() {
        ids = $('#teams').val()
        IM = false
    $.ajax({
        url: "http://localhost:3000/teamplayers.json?resolution="+ids+"&import="+IM,
        type:"get",
        dataType: "json",
        cache: true,
        success:function(data){
            $('#PlyrsTm2').html(data);
                $('#PlyrsTm2').show();
            alert(data);
            alert("Loading Players...."); 
            },
        error: function(error) {
                   alert("Failed " + console.log(error) + " " + error)
                   }           
                   });
                $('#PlyrsTm2').trigger('create');


            });


});

我单击一个按钮(#showbtn),它将一个整数值(#teams)传递给我的控制器,然后将其更改,这是我要加载的表:

'<table id = "PlyrsTm2" style = float:right><tr><th id="PTTitle" colspan=2>List of players on selected team</th></tr><tr><th id="PTHRows">Player</th><th id="PTHRows">Team</th></tr><tr><% @pl.each do |f| %><td class="player"><%= f.Plyr %></td><td class="team"><%= f.Team %></td></tr><% end %></table>

如您所见,其中包含Rails html,但我认为它实际上不会重新执行rails部分<& @pl.each do |f| %> <& @pl.each do |f| %>

然后我看到第一次打开页面时加载的同一张表。 那么,如何获得新信息重新执行?

如果需要,我可以发布控制器方法。

更新这里是控制器

class TeamplayersController < ApplicationController
    before_filter :set_id
    before_action :set_id, :set_teamplayer, only: [:show, :edit, :update, :destroy]

# GET /teamplayers
# GET /teamplayers.json
  def index
   @teamplayers = Teamplayer.all
   @fteams = Fteam.all

   tid = params[:resolution]
   toimport = params[:import]

   if tid.nil?
    tid = 1
   else
    tid = tid.to_i;
   end
   @ids = tid
   @pl =  Teamplayer.joins(:live_player).where(:teamid => @ids).all << Here should refresh the table

   if toimport == "true"
    @turl = Fteam.where(:id => @ids).pluck(:TeamUrl)

    @turl = @turl[0]  

    system "rake updateTm:updateA[#{@turl},#{@ids}]"
end
end

我看着你的小提琴。

改变这个

        $('#SelectedTm').replaceWith(test2);
        },
    error: function(error) {
               alert("Failed " + console.log(error) + " " + error)
               }           
               });
$('#SelectedTm').trigger('create');

对此

    $('#SelectedTm').html(test2);
        $('#SelectedTm').trigger('create');
        },
    error: function(error) {
               alert("Failed " + console.log(error) + " " + error)
               }           
               });

在此之后,您必须创建一个触发器

$( '#PlyrsTm2')的触发器( '创建')。

修改这个

success:function(success){
            $('#PlyrsTm2').html(change1);
            alert("test 3"); 
            }

对此

success:function(data){
            $('#PlyrsTm2').html(data);
            $('#PlyrsTm2').trigger('create');
            }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM